Python日志库logging
1. logging日志库
参考:
1.1 日志类型
Level | When it’s used |
---|---|
DEBUG |
Detailed information, typically of interest only when diagnosing problems. |
INFO |
Confirmation that things are working as expected. |
WARNING |
An indication that something unexpected happened, or indicative of some problem in the near future (e.g. ‘disk space low’). The software is still working as expected. |
ERROR |
Due to a more serious problem, the software has not been able to perform some function. |
CRITICAL |
A serious error, indicating that the program itself may be unable to continue running. |
1.2 修改日志格式
函数格式:logging.basicConfig(filename='', filemode='', format='', datefmt='', level='')
使用logging.basicConfig(format='')
,通过修改format
参数指定日志输出格式
1 | import logging |
basicConfig
参数信息:
关键字 | 描述 |
---|---|
filename | 创建一个FileHandler,使用指定的文件名,而不是使用StreamHandler。 |
filemode | 如果指明了文件名,指明打开文件的模式(如果没有指明filemode,默认为’a’)。 |
format | handler使用指明的格式化字符串。 |
datefmt | 使用指明的日期/时间格式。 |
level | 指明根logger的级别。 |
stream | 使用指明的流来初始化StreamHandler。该参数与’filename’不兼容,如果两个都有,’stream’被忽略。 |
format格式:
格式 | 描述 |
---|---|
%(levelno)s | 打印日志级别的数值 |
%(levelname)s | 打印日志级别名称 |
%(pathname)s | 打印当前执行程序的路径 |
%(filename)s | 打印当前执行程序名称 |
%(funcName)s | 打印日志的当前函数 |
%(lineno)d | 打印日志的当前行号 |
%(asctime)s | 打印日志的时间 |
%(thread)d | 打印线程id |
%(threadName)s | 打印线程名称 |
%(process)d | 打印进程ID |
%(message)s | 打印日志信息 |
1.3 logging的高级应用
logging采用模块化设计,包含四种组件:Loggers记录器、Handlers处理器、Formatters格式化器、Filters过滤器。
1.3.1 Loggers记录器
给应用程序提供可记录日志的接口。
1. 调用接口
1 | # logger属于单例模式,即__name__相同,则获取的logger相同 |
2. 设置日志级别
1 | logger.setLevel() |
3. 与处理器的联用
1 | logger.addHandler() |
1.3.2 Handlers处理器
常见的处理器
- StreamHandler:屏幕输出
sh = logging.StreamHandler(stream=None)
- FileHandler:文件记录
fh = logging.FileHandler(filename, mode='a', encoding=None, delay=False)
- BaseRotatingHandler:标准的分割文件日志
- RotatingFileHandler:按文件大小记录日志
- TimeRotatingFileHandler:按时间记录日志
fh.setFormatter(formatter1)
:给处理器sh
设置日志格式,formatter1
表示格式化器的实例
1.3.3 Formatters格式化器
调用接口:
1 | formatter = logging.Formatter(fmt=None, datefmt=None) |
fmt表示日志格式,datefmt表示日期格式
1.3.4 Filters过滤器
调用接口:
1 | filter = logging.Filter(name='') |
1.3.5 logging示例代码
1 | import logging |
由于处理器设置了两个,所以控制台和日志文件都会有输出。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 niliushall!
评论