Python,2.7.6 标准日志模块的简单示例

Python 标准库中的 logging 模块提供了一套标准的 API 来处理日志信息的打印。

import logging

logging.basicConfig(
    level    = logging.DEBUG,
    format   = '%(asctime)s [%(threadName)s] (%(filename)s:%(lineno)d) %(levelname)s - %(message)s',
    datefmt  = '%Y-%m-%d %H:%M:%S',
    filename = 'myapp.log',
)

logging.debug('This is a debug message')
logging.info('This is an info message')
logging.warning('This is a warning message')

在 myapp.log 中打印出的日志如下:

2015-03-11 15:54:34 [MainThread] (logging_demo.py:10) DEBUG - This is a debug message
2015-03-11 15:54:34 [MainThread] (logging_demo.py:11) INFO - This is an info message
2015-03-11 15:54:34 [MainThread] (logging_demo.py:12) WARNING - This is a warning message

logging.basicConfig 函数的参数说明:

参数说明
filename用户创建 FileHandler 实例的文件名
filemode日志文件的打开模式,默认为 'a'
format日志的输出格式
datefmt时间的输出格式
level日志级别,大小关系为 CRITICAL(50) > ERROR(40) > WARNING(30) > INFO(20) > DEBUG(10) > NOTSET(0)
stream用于初始化 StreamHandler 的流,此参数与 filename 一起指定时,会被忽略掉

logging 中的格式化符号:

符号说明
%(asctime)s时间
%(filename)s文件名
%(funcName)s函数名
%(levelname)s日志级别值
%(levelno)s日志级别
%(lineno)d行号
%(module)s模块
%(message)s日志消息
%(name)s日志名称
%(pathname)slogger的名称
%(process)d进程ID
%(processName)s进程名
%(thread)d线程ID
%(threadName)s线程名