import logging logger = logging.getLogger('simple_example') logger.setLevel(logging.DEBUG) # 创建日志保存文件 fh = logging.FileHandler('spam.log') fh.setLevel(logging.DEBUG) # 创建控制台日志输出 ch = logging.StreamHandler() ch.setLevel(logging.ERROR) # 设置日志格式 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') ch.setFormatter(formatter) fh.setFormatter(formatter) # add the handlers to logger logger.addHandler(ch) logger.addHandler(fh) # 'application' code logger.debug('debug message') logger.info('info message') logger.warning('warn message') logger.error('error message') logger.critical('critical message')
日志文件中的格式所用到的参数如下所示:
属性名称 | 格式 | 描述 |
---|---|---|
args | 不需要格式化。 | 合并到 |
asctime |
| 表示 |
created |
|
|
exc_info | 不需要格式化。 | 异常元组 (例如 |
filename |
|
|
funcName |
| 函数名包括调用日志记录. |
levelname |
| 消息文本记录级别 ( |
levelno |
| 消息数字记录级别 ( |
lineno |
| 发出日志记录调用所在的源行号(如果可用)。 |
message |
| 记入日志的消息,即 |
module 模块 |
| 模块 ( |
msecs |
|
|
msg | 不需要格式化。 | 在原始日志记录调用中传入的格式字符串。 与 |
name |
| 用于记录调用的日志记录器名称。 |
pathname |
| 发出日志记录调用的源文件的完整路径名(如果可用)。 |
process |
| 进程ID(如果可用) |
processName |
| 进程名(如果可用) |
relativeCreated |
| 以毫秒数表示的 LogRecord 被创建的时间,即相对于 logging 模块被加载时间的差值。 |
stack_info | 不需要格式化。 | 当前线程中从堆栈底部起向上直到包括日志记录调用并导致创建此记录的堆栈帧的堆栈帧信息(如果可用)。 |
thread |
| 线程ID(如果可用) |
threadName |
| 线程名(如果可用) |