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

[docker/redmine] run redmine with sqlite3 in docker

Basic Rule:  I want to use "/home2/home/redmine" directory for redmine DB.  I want to use sqlite3 for redmine. 1. in host side  # adduser redmine 2. in host side. (go into dockers container for copying base files to host)  # docker run -it -v /home2/home/redmine/:/usr/src/redmine/HOST --name redmine -p 80:3000 redmine bash 2-1. in redmine container of docker : work dir is /usr/src/redmine  # cp -a config HOST/  # cp -a db HOST/  # exit 2-2. in host side : remove all docker contatiners  # docker rm $(docker ps -a -q) 2-3. in host side : chown directories.  # cd /home2/home/redmine  # chown redmine.redmine . -R 3. edit "/home2/home/redmine/config/database.yml" production:   adapter: sqlite3   database: sqlite/redmine.db   host: localhost 4. Run Redmine with daemonized.  # docker run -d -v /etc/passwd:/etc/passwd:ro -v /home2/home/redmine/DB:/usr/src/redmine/sqlite -v /home2/home/redmine/config:/usr/src/redmine/config -v /home2/home/redmin

[WordPress] Change https redirect in DB.

If you make an https redirect without thinking about SSL configuration: Check DB SELECT * from wp_options where option_name IN ('siteurl', 'home'); Update UPDATE wp_options SET option_value = REPLACE(option_value, 'https://your_domain', 'http://your_domain') WHERE option_name IN ('siteurl', 'home');