Python中的日志模块
logging模块
在Python中,常用的用于写错误日志的库是logging。以下是一个简单的示例,演示如何在Python中使用logging库来记录错误日志:
1 | |
以上代码创建了一个名为error_logger的日志记录器,并将错误级别设置为logging.ERROR。然后,创建了一个文件处理器(FileHandler)和一个控制台处理器(StreamHandler),分别用于将日志写入文件和输出到控制台。最后,定义了日志的格式,并将处理器添加到日志记录器中。
在try块中的代码中,如果发生了错误,可以使用logger.error()方法将错误信息记录到日志文件和控制台中。
请注意,在使用logging库之前,需要先导入logging模块。
格式
logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')这句代码是用于定义日志的格式。
%(asctime)s:表示日志记录的时间,即当前时间,以可读的形式显示(例如:”2022-09-30 10:30:15”)。%(levelname)s:表示日志的级别,如DEBUG、INFO、WARNING、ERROR、CRITICAL等。%(message)s:表示实际的日志消息。
这样的定义可以让日志以特定的格式显示,方便阅读和分析日志。在这个例子中,日志的格式为:时间 - 日志级别 - 日志消息。例如:2022-09-30 10:30:15 - ERROR - 这是一个错误示例。
还可以根据需要自定义日志的格式,使用不同的占位符来输出不同的信息,例如输出日志记录器的名称%(name)s、输出所在的模块%(module)s等等。更多的占位符和格式选项可以参考Python官方文档的Logging.Formatter部分。
分隔存储
如果所有错误日志都写入同一个文件,会导致文件越来越大。为了解决这个问题,可以使用logging库的RotatingFileHandler或TimedRotatingFileHandler来分隔文件存储。下面是示例代码:
1.使用RotatingFileHandler:
1 | |
使用RotatingFileHandler时,可以通过maxBytes参数设置每个日志文件的最大大小,通过backupCount参数设置最多存储的日志文件数量。
2.使用TimedRotatingFileHandler:
1 | |
使用TimedRotatingFileHandler时,可以通过when参数指定日志文件的轮转时间间隔(例如:midnight表示每天生成一个日志文件),通过interval参数指定轮转时间间隔的数量。
除了midnight,TimedRotatingFileHandler的when参数还支持以下几种有效的取值:
S: 表示每秒生成一个日志文件。M: 表示每分钟生成一个日志文件。H: 表示每小时生成一个日志文件。D: 表示每天生成一个日志文件。W0~W6: 表示每个星期的周一至周日分别生成一个日志文件。midnight: 表示每天的午夜(00:00)生成一个日志文件。
这些取值可以根据需要灵活选择,以满足不同的日志轮转需求。例如,如果需要每小时生成一个日志文件,可以将when参数设置为'H';如果需要每周生成一个日志文件,可以将when参数设置为'W0' ~ 'W6',其中W0表示周一,W1表示周二,依此类推。
注意,这些取值均为大小写敏感。另外,TimedRotatingFileHandler还支持interval参数,用于指定轮转时间间隔的数量。例如,interval=2表示每2个时间单位生成一个日志文件(如每2小时、每2天等)。
更多关于TimedRotatingFileHandler的详细信息,可以查看Python官方文档的Logging.handlers.TimedRotatingFileHandler部分。

