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