Python打印log,包括行号,路径,方法名,文件

来源:互联网 发布:java的https通信 编辑:程序博客网 时间:2024/06/12 00:52

logger.py 文件


 #!/usr/bin/python # coding: utf-8   import logging import logging.handlers from logging import * from datetime import *  logger = logging.getLogger() logger.setLevel(logging.DEBUG)  rht = logging.handlers.TimedRotatingFileHandler("reindex_out.log", 'D') fmt = logging.Formatter("%(asctime)s %(pathname)s %(filename)s %(funcName)s %(lineno)s \      %(levelname)s - %(message)s", "%Y-%m-%d %H:%M:%S") rht.setFormatter(fmt) logger.addHandler(rht)  debug = logger.debug info = logger.info warning = logger.warn error = logger.error critical = logger.critical


测试脚本

#!/usr/bin/env python# coding utf-8 from logger import *import sysimport os info("log from logger info")debug("this is from test.py")print 'current dir is ' + os.getcwd()

format: 指定输出的格式和内容,format可以输出很多有用信息,如上例所示:
 
%(levelno)s:         打印日志级别的数值 %(levelname)s:    打印日志级别名称 %(pathname)s:    打印当前执行程序的路径,其实就是sys.argv[0] %(filename)s:      打印当前执行程序名 %(funcName)s:    打印日志的当前函数 %(lineno)d:         打印日志的当前行号 %(asctime)s:      打印日志的时间 %(thread)d:        打印线程ID %(threadName)s: 打印线程名称 %(process)d:      打印进程ID %(message)s:    打印日志信息

datefmt: 指定时间格式,同time.strftime()

level: 设置日志级别,默认为logging.WARNING

级别对应的值CRITICAL50ERROR40WARNING30INFO20DEBUG10NOTSET0

可以给日志对象(Logger Instance)设置日志级别,低于该级别的日志消息将会被忽略,也可以给Hanlder设置日志级别,对于低于该级别的日志消息, Handler也会忽略。