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

sanitize on in CMakeLists.txt

1. CMakeLists.txt set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address") add_compile_options(-fsanitize=address) If a subdir is set with add_subdirectory and a module that does not support sanitize is imported from the path and needs to be removed, add -fno-sanitize=address to add_compile_options in CMakeLists.txt of the subdir to remove it. Basically, if you enable sanitize, sanitize will adjust ulimit's core to 0, so core will not occur. You can do this by putting the following part as an environment variable. (Below is the part you put in systemd's service) 2. service file in systemd [Service] LimitCORE=infinity Environment="ASAN_OPTIONS=handle_segv=0:handle_abort=1:abort_on_error=1:disable_coredump=0"

e1000e 0000:00:1f.6 eno1: Detected Hardware Unit Hang

 make a file: /usr/local/etc/ethtool.sh (eno1 is your mgmt i/f, vmbr0 is your bridge i/f.) #!/bin/bash ethtool -K eno1 gso off gro on tso off tx on rx on rxvlan on txvlan on sg on && ethtool -K vmbr0 gso off gro on tso off tx on rx on rxvlan on txvlan on sg on ethtool -G eno1 rx 4096 if you want to activate on reboot. /etc/systemd/system/ethtool.service [Unit] Description=ethtool script [Service] WorkingDirectory=/usr/local/etc/ ExecStart=/usr/local/etc/ethtool.sh [Install] WantedBy=multi-user.target then systemctl enable ethtool.service && systemctl start ethtool.service refs: https://forum.proxmox.com/threads/e1000-driver-hang.58284/page-8#post-390709

[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/con...