Just a quick little utility script I wrote to make watching PHP error logs a tad easier:
Usage is
#tail -F /var/log/php/php_error.log | ~/bin/parsePHPErrors.py
Thanks to this Stackoverflow question, it even colorizes!
#!/usr/bin/python
import sys
import os
import re
input = os.fdopen(sys.stdin.fileno(),'r',100)
regex = re.compile("(.*?PHP (Warning|Error|Notice|):.*)")
line = input.readline()
class bcolors:
HEADER = '\033[95m'
OKBLUE = '\033[94m'
OKGREEN = '\033[92m'
WARNING = '\033[93m'
FAIL = '\033[91m'
ENDC = '\033[0m'
myColor = bcolors.OKGREEN
while line:
if regex.match(line) or line.find("TODO") > -1:
isCorrect = True
if line.find("Fatal error") > -1:
myColor = bcolors.FAIL
pass
elif line.find("Error") > -1:
myColor = bcolors.FAIL
#todo get console color code
pass
elif line.find("Warning") > -1:
myColor = bcolors.WARNING
pass
elif line.find("Notice") > -1:
myColor = bcolors.OKBLUE
pass
elif line.find("TODO") > -1:
myColor = bcolors.OKBLUE
pass
if isCorrect:
print "#"*25, "@"*25, "#"*25
print
else:
pass
#myColor = bcolors.OKGREEN
print myColor, line.strip(), bcolors.ENDC
line = input.readline()
Output looks like:
######################### @@@@@@@@@@@@@@@@@@@@@@@@@ ######################### [28-Mar-2011 11:14:10] PHP Notice: Undefined variable: sql in
basically breaking up individual error messages into visually easy to spot blocks