背景
在一些简单场景下,可以使用单python文件实现。这是也可以通过logging模块来记录执行日志。
一般情况通过shell直接运行脚本,建议配置console输出和文件输出log。其中文件输出建议使用按时间分割或者按大小分割,以免日志文件过大,导致后续排查问题困难。
实现
简单的场景下,可以直接使用basicConfig来配置:
1 | timedRotatingFileHandler = handlers.TimedRotatingFileHandler( |
其中:
format:配置日志格式。
StreamHandler:即console输出,如使用命令行执行,就会直接在命令行输出信息。
TimedRotatingFileHandler:为按时间分割的log文件。
以上就是一个简单日志配置,实现脚本运行时,日志同步输出到按时间分割的文件和console。
拓展
logging模块的basicConfig其实是自带文件记录的,可以先看下它的定义:
1 | def basicConfig(**kwargs): |
可以看出可以通过在basicConfig()中有如下三个参数:
- filename:记录日志的文件名
- filemode:记录日志的方式(a为追加,w为覆盖)
- stream:console输出
可以通过配置filename,filemode参数来配置文件输出。但仅是单文件输出而已。如果这两个参数留空,那么默认stream输出,这两种无法直接使用同时配置。
若需要同时有console输出和文件记录那么需要使用另一个参数:
- handlers:通过先定义handler,并添加到该参数中,即可。
另外,需要注意的是,在自行定义handler时, 基础的三个handler:StreamHandler
, FileHandler
和 NullHandler
是直接定义在logging模块中的,而其他handler,如按TimedRotatingFileHandler
、SocketHandler
、SysLogHandler
等则需要通过logging.handlers模块引入。
1 | import logging |