Skip to main content

Redmine production.log to uri log

But.. It doesn't work well. (Because the sequence of line is not arranged.)
It is better way to use 'redmine_access_logger' plugin than this

#!/bin/bash

# Setting
LOG_FILE=/redmine-3.3.3/log/production.log
#LOG_FILE=mylog.log
PIDFILE=/var/run/redmine_info_log.pid

# Program Variables
OUTPUT_LOGDIR=`dirname ${LOG_FILE}`

OPT_DEBUG=0
URI_FILTER_REGEX="(^\"/people/avatar)|(^/attachments/thumbnail/)|(^\"/issues/.*\.xml)"

function echo_log()
{
  if [ "$2" != "" ]; then
    echo "$1" >> $2
  else
    echo "$1"
  fi
}


if [ -f $PIDFILE ]
then
  PID=$(cat $PIDFILE)
  ps -p $PID > /dev/null 2>&1
  if [ $? -eq 0 ]
  then
    echo "Process already running"
    exit 1
  else
    ## Process not found assume not running
    echo $$ > $PIDFILE
    if [ $? -ne 0 ]
    then
      echo "Could not create PID file"
      exit 1
    fi
  fi
else
  echo $$ > $PIDFILE
  if [ $? -ne 0 ]
  then
    echo "Could not create PID file"
    exit 1
  fi
fi

tail -F ${LOG_FILE} 2>/dev/null |
while read MSG_LOG; do
  if [ "${OUTPUT_LOGDIR}" != "" ];then
    OUTPUT_FILE="${OUTPUT_LOGDIR}/access_uri_`date +%Y%m%d`.log"
  else
    OUTPUT_FILE=""
  fi
  let IS_PRINT=0
  MSG_ARR=( $MSG_LOG )
  if [[ "${MSG_LOG}" =~ ^"Started " ]];  then
    MSG_URI=${MSG_ARR[2]}
    MSG_TS_DATE="${MSG_ARR[6]}"
    MSG_TS_TIME="${MSG_ARR[7]}"
    MSG_USER_IP=${MSG_ARR[4]}
    let IS_PRINT=1
  elif [[ "${MSG_LOG}" =~ ^"Current user: " ]];  then
    MSG_USER_ID="${MSG_ARR[2]}${MSG_ARR[3]}"
    let IS_PRINT=2
  fi
  if [ "${OPT_DEBUG}" == "1" ]; then
    echo_log "DEBUG: ${MSG_LOG}" ${OUTPUT_FILE}
  fi
  if [ ${IS_PRINT} -eq 2 ]; then
    let IS_FILTERD=0
    OUT_MSG="${MSG_TS_DATE} ${MSG_TS_TIME} ${MSG_USER_ID} ${MSG_USER_IP} ${MSG_URI}"
    OUT_MSG_ARR=( ${OUT_MSG} )
    # URI Ignore List Check
    if [[ ${MSG_URI} =~ $URI_FILTER_REGEX ]] ; then
      let IS_FILTERD=1
    fi
    if [ ${IS_FILTERD} -eq 0 ]; then
      if [ ${#OUT_MSG_ARR[@]} -eq 5 ]; then
        echo_log "${OUT_MSG}" ${OUTPUT_FILE}
      else
        if [ "${OPT_DEBUG}" == "1" ]; then
          echo_log "DEBUG: Error ${MSG_LOG}" ${OUTPUT_FILE}
        fi
      fi
    fi
    MSG_URI=""
    MSG_TS_DATE=""
    MSG_TS_TIME=""
    MSG_USER_IP=""
    MSG_USER_ID=""
  fi
done

rm $PIDFILE
x

Comments

Popular posts from this blog

[raspbian] How To Install Python-3.6.11

Environment   raspbian: jessie   Linux phome 4.9.35-v7+ #1014 SMP Goal:   To setup Jupyter Notebook.   (needed pip3 18.1. (It required Python 3.5 but mine is 3.4.2) Conclusion:   - Python-3.6.11 : OK   - Python-3.8.3      make : OK, but pip cannot connect TLS/SSL       ( https://stackoverflow.com/questions/62827291/warning-pip-is-configured-with-locations-that-require-tls-ssl-however-the-ssl )      I think that it occurred by the difference of  openssl versions.      (But I did not to try figure out)    - Python-3.7.4 : Same problem like 3.8.3.    - Python-3.5.9 : Compile error by gcov dependency. Method:   - Download 3.6.11 source and compile.   - Type "make altinstall"   - Make file links with "update-alternatives" command.

[bash-script/gcc] check warning of make within git-diff of commit

When you need check "make warning" in specific commits, you can use this script to check just in some commits. This script takes some steps. step1. You must know your commit hash. : like abcd1234 step2. Checkout to your commit.  Like this, git checkout abcd1234. step3. You need output file that run make.  Try to run command "make &> myoutput" step4. Then run this. ./new_warning.sh abcd1234 myoutput You can download this script :  new_warning.sh