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 | 线程名 |