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!
评论





