logging模块

Posted xuqidong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了logging模块相关的知识,希望对你有一定的参考价值。

技术图片
 1 ‘‘‘
 2 import logging
 3 
 4 # 1. 控制日志级别
 5 # 2. 控制日志格式
 6 # 3. 控制输出的目标为文件
 7 logging.basicConfig(filename=‘access.log‘,
 8                     format=‘%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s‘,
 9                     datefmt=‘%Y-%m-%d %H:%M:%S %p‘,
10                     level=10,
11                     )
12 
13 logging.debug(‘debug日志‘) # 10
14 logging.info(‘info日志‘)   # 20
15 logging.warning(‘warning日志‘) #30
16 logging.error(‘error日志‘)#40
17 logging.critical(‘critical日志‘) #50
18 
19 # 火警的级别
20 
21 # 大功率电器
22 # 抽烟
23 # 烧烤
24 
25 
26 
27 ‘‘‘
28 # 1. 能够同时往终端与文件中记录日志
29 # 2. 能够修改字符串编码
30 
31 import logging
32 
33 # 1. logger对象: 负责生产各种级别的日志
34 logger1 = logging.getLogger(用户交易)  # 日志名用来标识日志的与什么业务有关
35 
36 # 2. filter对象: 过滤日志
37 
38 # 3. handler对象: 控制日志输出目标位置
39 fh1 = logging.FileHandler(a1.log,encoding=utf-8)
40 fh2 = logging.FileHandler(a2.log,encoding=utf-8)
41 ch = logging.StreamHandler()
42 
43 # 4. formmater对象
44 formatter1 = logging.Formatter(
45     fmt=%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s,
46     datefmt=%Y-%m-%d %H:%M:%S %p
47 )
48 
49 formatter2 = logging.Formatter(
50     fmt=%(asctime)s - %(levelname)s :  %(message)s,
51     datefmt=%Y-%m-%d %H:%M:%S %p
52 )
53 
54 # 5. 绑定logger对象与handler对象
55 logger1.addHandler(fh1)
56 logger1.addHandler(fh2)
57 logger1.addHandler(ch)
58 
59 # 6. 绑定handler对象与formatter对象
60 
61 fh1.setFormatter(formatter1)
62 fh2.setFormatter(formatter1)
63 ch.setFormatter(formatter2)
64 
65 # 7. 设置日志级别,有logger对象与handler对象两层关卡,必须都放行最终日志才会放行,通常二者级别相同
66 logger1.setLevel(10)
67 fh1.setLevel(10)
68 fh2.setLevel(10)
69 ch.setLevel(10)
70 
71 # 8. 使用logger对象产生日志
72 logger1.info(alex给egon转账1个亿)
基本使用
技术图片
 1 standard_format = %(asctime)s - task:%(name)s - %(filename)s:%(lineno)d -  2                    %(levelname)s : [%(message)s]
 3 
 4 simple_format = %(filename)s:%(lineno)d - %(levelname)s : [%(message)s]
 5 
 6 fh1_path = ra1.log
 7 fh2_path = ra2.log
 8 
 9 # log配置字典
10 LOGGING_DIC = {
11     version: 1,
12     disable_existing_loggers: False,
13     formatters: {
14         standard: {
15             format: standard_format
16         },
17         simple: {
18             format: simple_format
19         },
20     },
21     filters: {},
22     handlers: {
23         #打印到终端的日志
24         ch: {
25             level: DEBUG,
26             class: logging.StreamHandler,  # 打印到终端
27             formatter: simple
28         },
29         #打印到a1.log文件的日志
30         fh1: {
31             level: DEBUG,
32             class: logging.FileHandler,  # 保存到文件
33             formatter: standard,
34             filename: fh1_path,  # 日志文件的路径
35             encoding: utf-8,  # 日志文件的编码,再也不用担心中文log乱码了
36         },
37         # 打印到a2.log文件的日志
38         fh2: {
39             level: DEBUG,
40             class: logging.FileHandler,  # 保存到文件
41             formatter: simple,
42             filename: fh2_path,  # 日志文件的路径
43             encoding: utf-8,  # 日志文件的编码,再也不用担心中文log乱码了
44         },
45 
46     },
47     loggers: {
48         ‘‘: {
49             handlers: [fh1, fh2, ch],
50             level: DEBUG,
51         },
52     },
53 }
配置字典
技术图片
1 import logging.config
2 from conf import settings
3 
4 def get_logger(name):
5     logging.config.dictConfig(settings.LOGGING_DIC)
6     logger1=logging.getLogger(name)
7     return logger1
定义函数

 

以上是关于logging模块的主要内容,如果未能解决你的问题,请参考以下文章

如何使用模块化代码片段中的LeakCanary检测内存泄漏?

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

python常用代码片段总结

前端开发常用js代码片段

vs code 自定义代码片段

如何有条件地将 C 代码片段编译到我的 Perl 模块?