Python日志模块

日志的重要性不言而喻,之前写各种程序最纠结的就是这部分了,每次都自己定义日志格式,以后还是用标准的python日志模块吧。Python的日志类型也是Nginx和Syslog一样,是分等级的。 NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL 如果把looger的级别设置为INFO, 那么小于INFO级别的日志都不输出, 大于等于INFO级别的日志都输出

vim mylog.py

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
import logging 
 
'''
log level:
    NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL
 
    logging.DEBUG
    logging.INFO
    logging.WARNING
    logging.ERROR
    logging.CRITICAL
 
'''
 
# 创建一个logger 
logger = logging.getLogger('mylogger') 
logger.setLevel(logging.DEBUG) 
   
# 创建一个handler,用于写入日志文件 
fh = logging.FileHandler('watchdir.log') 
fh.setLevel(logging.DEBUG) 
 
# 再创建一个handler,用于输出到控制台 
ch = logging.StreamHandler() 
ch.setLevel(logging.ERROR) 
   
# 定义handler的输出格式 
formatter = logging.Formatter('%(levelname)s [%(asctime)s] %(name)s:%(pathname)s line=%(lineno)d [message="%(message)s"]') 
fh.setFormatter(formatter) 
ch.setFormatter(formatter) 
   
# 给logger添加handler 
logger.addHandler(fh) 
logger.addHandler(ch)
 
if __name__ == '__main__':
 
    logger.debug('debug')   
    logger.info('info')
    logger.warning('warn')  
    logger.error('error') 
    try:
        print 1/0
    except Exception, e:
        logger.error(str(e[0]))

上面的是日志模块,支持输出到文件,也输出到终端,下面是子模块调用

#!/usr/bin/env python2.7
# -*- coding: UTF-8 -*-
 

from myLog import logger

try 1/0:
    print "error"
except,Exception,e:
    logger.info(str(e))

标签:none

评论已关闭