1.日志等级
日志等级(level) | 描述 |
---|---|
DEBUG | 最详细的日志信息,典型应用场景是 问题诊断 |
INFO | 信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作 |
WARNING | 当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的 |
ERROR | 由于一个更严重的问题导致某些功能不能正常运行时记录的信息 |
CRITICAL | 当发生严重错误,导致应用程序不能继续运行时记录的信息 |
2.日志级别等级排序:
critical > error > warning > info > debug
# 这个指设置级别参数: logging.basicConfig(level=logging.DEBUG)
3.logging.basicConfig() 函数关键字参数:
关键字 | 描述 |
---|---|
filename | 创建一个 FileHandler,使用指定的文件名,而不是使用 StreamHandler。 |
filemode | 如果指明了文件名,指明打开文件的模式(如果没有指明 filemode,默认为 ‘a’)。 |
format | handler 使用指明的格式化字符串。 |
datefmt | handler 使用指明的格式化字符串。 |
level | 指明根 logger 的级别。 |
stream | 使用指明的流来初始化 StreamHandler。该参数与 ‘filename’ 不兼容,如果两个都有,’stream’ 被忽略。 |
4.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 | 打印日志信息 |
5.将日志信息记录到文件
import logging
# 日志信息记录到文件
logging.basicConfig(filename='example.log', level=logging.DEBUG) # log文件会自己创建
logging.debug('This message should go to the log file')
logging.info('So should this')
logging.warning('And this, too')
6.更改显示消息格式
import logging
# 显示消息时间
logging.basicConfig(format='%(asctime)s %(message)s')
logging.warning('is when this event was logged.')
logging.basicConfig(format='%(asctime)s %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p')
logging.warning('我是你爸爸.')
主要参考:第32天:Python logging 模块详解 - 纯洁的微笑博客
7. logging.conf 配置文件使用详解
[loggers]
keys=root,fileLogger,rotatingFileLogger
[handlers]
keys=consoleHandler,fileHandler,rotatingFileHandler
[formatters]
keys=simpleFormatter
[logger_root]
level=DEBUG
handlers=consoleHandler
[logger_fileLogger]
level=DEBUG
handlers=fileHandler
qualname=fileLogger
propagate=0
[logger_rotatingFileLogger]
level=DEBUG
handlers=consoleHandler,rotatingFileHandler
qualname=rotatingFileLogger
propagate=0
[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)
[handler_fileHandler]
class=FileHandler
level=DEBUG
formatter=simpleFormatter
args=('logging.log', 'a')
[handler_rotatingFileHandler]
class=handlers.RotatingFileHandler
level=WARNING
formatter=simpleFormatter
args=("rotating_logging.log", "a", 1*1024*1024, 5)
[formatter_simpleFormatter]
#format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
format=%(asctime)s - %(module)s - %(thread)d - %(levelname)s : %(message)s
datefmt=%Y-%m-%d %H:%M:%S
import logging.config
logging.config.fileConfig('logging.conf')
# 输出日志到控制台,获取的是root对应的logger
console_logger = logging.getLogger()
console_logger.debug("我是你爹")
# 输出日志到单个文件
file_logger = logging.getLogger(name="fileLogger")
# rotatingFileLogger中额consoleHandler输出到控制台,rotatingHandler输出日志到文件
rotating_logger = logging.getLogger(name="rotatingFileLogger")
rotating_logger.debug("我是你yeye")
1.loggers : 配置logger信息。必须包含一个名字叫做root的logger,当使用无参函数logging.getLogger()时,默认返回root这个logger,其他自定义logger可以通过 logging.getLogger("fileLogger") 方式进行调用
2.handlers:定义声明handlers信息。常用的handlers包括 StreamHandler(仅将日志输出到kong控制台)、FileHandler(将日志信息输出保存到文件)、RotaRotatingFileHandler(将日志输出保存到文件中,并设置单个日志wenj文件的大小和日志文件个数)
3.formatter : 设置日志格式
4.logger_xxx : 对loggers中声明的logger进行逐个配置,且要一一对应
5.handler_xxx : 对handlers中声明的handler进行逐个配置,且要一一对应
6.formatter_xxx : 对声明的formatterjinx进行配置
https://docs.python.org/3.8/library/logging.config.html#logging-config-fileformat