python logger日志管理

普通日志生成logger代码:

import os
import time
import logging.config
from logging.handlers import TimedRotatingFileHandler

# 确定日志文件及等级
log_file_name = time.strftime("%Y-%m-%d", time.gmtime()) + '.log'
LOG_FILE = os.path.join(os.path.dirname(__file__), log_file_name)
LOG_LV = logging.INFO

# 设置日志format
simple_fmt = "%(asctime)s - %(levelname)s - %(filename)s - %(funcName)s: %(message)s"
thread_fmt = "%(asctime)s - %(levelname)s - %(filename)s - %(funcName)s - %(threadName)s: %(message)s"
simple_formatter = logging.Formatter(simple_fmt)
thread_formatter = logging.Formatter(thread_fmt)

# 设置屏幕输出format,生成console handler
basic_console_handler = logging.StreamHandler()
basic_console_handler.setFormatter(simple_formatter)

# 设置文件format,生成file handler
basic_file_handler = TimedRotatingFileHandler(LOG_FILE, when="midnight")
basic_file_handler.setFormatter(thread_formatter)

# 配置等级
logging.config.dictConfig({"disable_existing_loggers": False, "version": 1})
logging.root.setLevel(LOG_LV)

logger = logging.getLogger(__name__)
# 添加输出handler、文件handler
logger.addHandler(basic_console_handler)
logger.addHandler(basic_file_handler)

测试代码:

logger.info("this is info")

logger.debug("this is debug")

logger.warning("this is waring")



logger.info("another info")

logger.debug("another debug")

logger.warning("another warning")



logger.info("another2 info")

logger.debug("another2 debug")

logger.warning("another2 warning")

屏幕输出:

2022-04-27 10:27:15,899 - INFO - 2.py - <module>: this is info
2022-04-27 10:27:15,899 - WARNING - 2.py - <module>: this is waring
2022-04-27 10:27:16,902 - INFO - 2.py - <module>: another info
2022-04-27 10:27:16,902 - WARNING - 2.py - <module>: another warning
2022-04-27 10:27:17,903 - INFO - 2.py - <module>: another2 info
2022-04-27 10:27:17,903 - WARNING - 2.py - <module>: another2 warning

文件写入:

2022-04-27 10:27:15,899 - INFO - 2.py - <module> - MainThread: this is info
2022-04-27 10:27:15,899 - WARNING - 2.py - <module> - MainThread: this is waring
2022-04-27 10:27:16,902 - INFO - 2.py - <module> - MainThread: another info
2022-04-27 10:27:16,902 - WARNING - 2.py - <module> - MainThread: another warning
2022-04-27 10:27:17,903 - INFO - 2.py - <module> - MainThread: another2 info
2022-04-27 10:27:17,903 - WARNING - 2.py - <module> - MainThread: another2 warning

补充json日志配置:

from pythonjsonlogger import jsonlogger


json_console_handler = logging.StreamHandler()
json_console_handler.setFormatter(json_formatter)
json_console_handler.setLevel(LOG_LV)
json_file_handler = TimedRotatingFileHandler(LOG_FILE, when='midnight')
json_file_handler.setFormatter(json_formatter)
json_file_handler.setLevel(LOG_LV)


logging.root.addHandler(json_file_handler)
logging.root.addHandler(json_console_handler)

补充dictconfig配置相关:

import logging
import logging.config
 
LOGGING_CONFIG = {
    "version": 1,
    "formatters": {
        "default": {
            'format':'%(asctime)s %(filename)s %(lineno)s %(levelname)s %(message)s',
        }
    },
    "handlers": {
        "console": {
            "class": "logging.StreamHandler",
            "level": "INFO",
            "formatter": "default",
        }
    },
    "disable_existing_loggers": True,
    "root": {
        "handlers": ["console"],
        "level": "DEBUG"
    },
}
 
logging.config.dictConfig(LOGGING_CONFIG)
logger = logging.getLogger("console_logger")

# 测试代码
logger.debug('debug message')
logger.info('info message')
logger.warn('warning message')
logger.error('error message')
logger.critical('critical message')

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python logger 是一个内置的日志记录模块,它可以帮助我们在程序中记录和管理日志信息。使用 Python logger,我们可以将程序的运行状态、错误信息等输出到日志文件或者控制台。 要使用 Python logger,我们首先需要导入 logging 模块。然后,我们可以创建一个 logger 对象,并设置它的日志级别、输出格式等属性。接下来,我们可以使用 logger 对象进行日志记录,包括调用不同级别的方法,如 debug、info、warning、error 等。 下面是一个简单的示例: ```python import logging # 创建一个 logger 对象 logger = logging.getLogger('my_logger') # 设置日志级别 logger.setLevel(logging.DEBUG) # 创建一个文件处理器 file_handler = logging.FileHandler('my_log.log') # 设置文件处理器的日志级别 file_handler.setLevel(logging.DEBUG) # 创建一个控制台处理器 console_handler = logging.StreamHandler() # 设置控制台处理器的日志级别 console_handler.setLevel(logging.INFO) # 创建一个日志格式器 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') # 设置文件处理器和控制台处理器的格式化器 file_handler.setFormatter(formatter) console_handler.setFormatter(formatter) # 将处理器添加到 logger 对象中 logger.addHandler(file_handler) logger.addHandler(console_handler) # 记录日志 logger.debug('This is a debug message') logger.info('This is an info message') logger.warning('This is a warning message') logger.error('This is an error message') ``` 在上面的示例中,我们创建了一个名为 'my_logger' 的 logger 对象,并设置了它的日志级别为 DEBUG。然后,我们创建了一个文件处理器和一个控制台处理器,并设置它们的日志级别分别为 DEBUG 和 INFO。接着,我们创建了一个日志格式器,并将它设置给文件处理器和控制台处理器。最后,我们使用 logger 对象记录了不同级别的日志信息。 通过使用 Python logger,我们可以更好地跟踪程序的运行状态和调试信息,从而方便地进行错误排查和日志分析。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值