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
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
Post a Comment