标签:01 logging 16 py common 模块 日志 2021
[logging日志模块]
-
日志级别
CRITICAL = 50 # 严重 critical FATAL = CRITICAL
ERROR = 40 # 错误 error
WARNING = 30 # 警告 warning WARN = WARNING
INFO = 20 # 消息 info
DEBUG = 10 # 调试 debug
NOTSET = 0 # 不设置
-
logging模块的Formatter,Handler,Logger,Filter对象
logger:产生日志的对象
Filter:过滤日志的对象
Handler:接收日志然后控制打印到不同的地方,FileHandler用来打印到文件中,StreamHandler用来打印到终端
Formatter对象:可以定制不同的日志格式对象,然后绑定给不同的Handler对象使用,以此来控制不同的Handler的日志格式
-
日志配置字典
# settings.py
standard_format = '%(asctime)s %(filename)s:%(lineno)d %(name)s %(levelname)s %(message)s'
simple_format = '%(asctime)s %(message)s'
LOGGING_DIC = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'standard': {
'format': standard_format
},
'simple': {
'format': simple_format
},
},
'filters': {},
'handlers': {
#打印到文件的日志,收集info及以上的日志
'file1': {
'level': 'DEBUG',
'class': 'logging.FileHandler', # 保存到文件
'formatter': 'standard',
'filename': 'a1.log',
'encoding': 'utf-8',
},
'file2': {
'level': 'DEBUG',
'class': 'logging.FileHandler', # 保存到文件
'formatter': 'standard',
'filename': 'a2.log',
'encoding': 'utf-8',
},
#打印到终端的日志
'stream': {
'level': 'DEBUG',
'class': 'logging.StreamHandler', # 打印到屏幕
'formatter': 'simple'
},
},
'loggers': {
#logging.getLogger(__name__)拿到的logger配置
'': {
'handlers': ['file1','file2','stream'], # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
'level': 'ERROR', # loggers(第一层日志级别关限制)--->handlers(第二层日志级别关卡限制)
'propagate': False, # 默认为True,向上(更高level的logger)传递,通常设置为False即可,否则会一份日志向上层层传递
},
'提示日志': {
'handlers': ['stream'], # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
'level': 'ERROR', # loggers(第一层日志级别关限制)--->handlers(第二层日志级别关卡限制)
'propagate': False, # 默认为True,向上(更高level的logger)传递,通常设置为False即可,否则会一份日志向上层层传递
},
},
}
-
导入logging加载settings字典,配置生成对应对象以及绑定关系
# common.py
import settings # 导入settings拿到配置字典
import logging.config # 导入logging模块标准库
def get_logger(name):
logging.config.dictConfig(settings.LOGGING_DIC)
return logging.getLogger(name)
logger1 = get_logger("用户交易")
logger1.debug("调试日志")
logger1.info("egon给lxx转了1个亿")
logger1.warning("警告")
logger1.error("错误")
logger1.critical("危机")
logger2 = get_logger("安全相关")
logger2.debug("调试日志")
logger2.info("常规")
logger2.warning("警告")
logger2.error("egon登录失败")
logger2.critical("危机")
-
日志格式
# al.txt
2021-01-05 12:16:58,932 common.py:13 用户交易 ERROR 错误
2021-01-05 12:16:58,932 common.py:14 用户交易 CRITICAL 危机
2021-01-05 12:16:58,934 common.py:20 安全相关 ERROR egon登录失败
2021-01-05 12:16:58,934 common.py:21 安全相关 CRITICAL 危机
2021-01-05 16:10:38,257 common.py:13 用户交易 ERROR 错误
2021-01-05 16:10:38,258 common.py:14 用户交易 CRITICAL 危机
2021-01-05 16:10:38,260 common.py:20 安全相关 ERROR egon登录失败
2021-01-05 16:10:38,260 common.py:21 安全相关 CRITICAL 危机
# a2.txt
2021-01-05 12:16:58,932 common.py:13 用户交易 ERROR 错误
2021-01-05 12:16:58,932 common.py:14 用户交易 CRITICAL 危机
2021-01-05 12:16:58,934 common.py:20 安全相关 ERROR egon登录失败
2021-01-05 12:16:58,934 common.py:21 安全相关 CRITICAL 危机
2021-01-05 16:10:38,257 common.py:13 用户交易 ERROR 错误
2021-01-05 16:10:38,258 common.py:14 用户交易 CRITICAL 危机
2021-01-05 16:10:38,260 common.py:20 安全相关 ERROR egon登录失败
2021-01-05 16:10:38,260 common.py:21 安全相关 CRITICAL 危机
标签:01,logging,16,py,common,模块,日志,2021 来源: https://www.cnblogs.com/liupengfei1123/p/14612207.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。