基础使用
- 在编码时我们经常会用到logging这个模块来实现一些日志的输出:
import logging
logging.info("Start_do_something")
try:
do_something()
except Exception as err:
logging.error("error: %s", err)
logging.info("End_do_something")
一般error()输出特定的错误信息,info()用于输出相应的辅助信息,让我们了解程序的执行状况。
还有debug(), warning()…
如何灵活配置?
- 在网上找了好久也没有看到很详细的,最后找到几个的不错的自个又总结了一下形成本文。
import logging
import logging.config
LOGGING_CONFIG = {
"version": 1,
"formatters": {
"default": {
'format': '%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s: %(message)s',
},
"plain": {
"format": "%(message)s",
},
},
"handlers": {
"console": {
"class": "logging.StreamHandler",
"level": "INFO",
"formatter": "default",
},
"console_plain": {
"class": "logging.StreamHandler",
"level": logging.INFO,
"formatter": "plain"
},
"file": {
# "class": "logging.FileHandler",
'class': 'logging.handlers.RotatingFileHandler',
"level": 20,
"filename": "./logs/error_log.log",
"formatter": "default",
"maxBytes": 30 * 1024 * 1024,
"backupCount": 5,
"encoding": 'utf-8'
}
},
"loggers": {
"console_logger": {
"handlers": ["console"],
"level": "INFO",
"propagate": False,
},
"console_plain_logger": {
"handlers": ["console_plain"],
"level": "DEBUG",
"propagate": False,
},
"file_logger": {
"handlers": ["file"],
"level": "INFO",
"propagate": False,
}
},
"disable_existing_loggers": True,
}
# 在别处可以直接引用过去设置logger即可
logging.config.dictConfig(LOGGING_CONFIG)
my_logger = logging.getLogger("file_logger")
my_logger.info("something...")
- 想要输出traceback。加上 exc_info=True 来输出异常:
my_logger.info("something...", exc_info=True)
- 很多字段的详情内容可参阅源码和官方文档
- Reference
https://blog.csdn.net/u010099080/article/details/103769461
https://docs.python.org/3.7/library/logging.config.html
https://cloud.tencent.com/developer/article/1772559