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)s | logger的名称 |
%(process)d | 进程ID |
%(processName)s | 进程名 |
%(thread)d | 线程ID |
%(threadName)s | 线程名 |