Skip to content

Instantly share code, notes, and snippets.

@ixqbar
Created June 19, 2015 02:56
Show Gist options
  • Save ixqbar/3a5c1e46bd09112acda1 to your computer and use it in GitHub Desktop.
Save ixqbar/3a5c1e46bd09112acda1 to your computer and use it in GitHub Desktop.
check log errors
#!/bin/sh
#
#
if [ "$#" -ge 1 ]; then
LOG_DIR=$1
else
LOG_DIR=/data/wwwroot/game_server/logs
fi
if test ! -d ${LOG_DIR}; then
exit 0
fi
LDATE=`date +%Y%m%d`
LPATH=$(cd "$(dirname "$0")"; pwd)
LOG_IGNORE_FILE=${LPATH}/ignore_${LDATE}.log
[[ -f ${LOG_IGNORE_FILE} ]] || touch ${LOG_IGNORE_FILE}
LOG_FILE=${LOG_DIR}/*${LDATE}*.log
LOG_IGNORE_PATTERN_NUM=`cat ${LOG_IGNORE_FILE}|wc -l`
if [ ${LOG_IGNORE_PATTERN_NUM} -eq 0 ]; then
LOG_IGNORE_PATTERN="info|debug"
else
LOG_IGNORE_FILE_LINE_HEAD=`cat -s ${LOG_IGNORE_FILE} | sed -e '/^$/d' | awk -F "|" '{print $1}'| tr "\n" "|"`
#留意:必须再追加一个过滤 因为LOG_IGNORE_FILE_LINE_HEAD是以|结尾
LOG_IGNORE_PATTERN="info|debug|${LOG_IGNORE_FILE_LINE_HEAD}info"
fi
ERROR_LINES=`cat ${LOG_FILE} | grep -v -E "${LOG_IGNORE_PATTERN}" | grep -E "error|except|Undefined|Memory|Timeout|Fatal"`
if test -z "${ERROR_LINES}"; then
exit 0
fi
echo "${ERROR_LINES}" >> ${LOG_IGNORE_FILE}
ERROR_CONTENT=`echo "${ERROR_LINES}"| sed ':a;N;$!ba;s/\n/<br>/'`
EMAIL_BODY="<b>DATE:${LDATE}</b><br><br><div style='color:red;'>${ERROR_CONTENT}</div>"
python ${LPATH}/send_email.py "${EMAIL_BODY}"
#!/usr/bin/python
#coding:utf-8
import sys
import smtplib
from email.mime.text import MIMEText
def send_mail(body):
host = 'smtp.163.com'
port = 25
sender = 'wxddong@163.com'
pwd = ''
to = 'ixqbar@gmail.com'
cc = ['erwei@jizegame.com']
msg = MIMEText(body, 'html')
msg['subject'] = 'php error'
msg['from'] = sender
msg['to'] = to
msg['cc'] = ','.join(cc)
s = smtplib.SMTP(host, port)
s.login(sender, pwd)
s.sendmail(sender, [to] + cc, msg.as_string())
s.close()
if __name__ == '__main__':
if len(sys.argv) >= 2:
send_mail(sys.argv[1])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment