python - logger

日志配置

import logging
from logging.handlers import TimedRotatingFileHandler

# NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL

# 创建一个 logger
logger = logging.getLogger('default')
logger.setLevel(logging.DEBUG)

# 日志输出格式
formatter = logging.Formatter('%(asctime)s [%(levelname)s] --- %(pathname)s:%(lineno)s: %(message)s')

# 日志轮转:大于 1G 另存,保留 5 份,多个 handler 指向一个文件,会产生互相占用的问题,这也意味着轮转机制只能有一种
# handler = RotatingFileHandler('log/app.log', maxBytes=1024 * 1024 * 1024, backupCount=10)
# handler.setLevel(logging.CRITICAL)
# handler.setFormatter(formatter)
# logger.addHandler(handler)

# 日志轮转,每日 0 点另存,1 天 1 次,保留 50 份
handler = TimedRotatingFileHandler('log/app.log', when='midnight', interval=1, backupCount=50)
handler.suffix = "app_%Y%m%d.log"
handler.setLevel(logging.DEBUG)
handler.setFormatter(formatter)
logger.addHandler(handler)

# 控制台日志
handler = logging.StreamHandler()
handler.setLevel(logging.DEBUG)
formatter = logging.Formatter(
    '\033[0;30m%(asctime)s \033[1;36m[%(levelname)s] \033[0m--- %(pathname)s:%(lineno)s: \033[1;31m%(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)


# 获取一个 logger
def get_logger(name: str = 'default') -> logging.Logger:
    if name == 'default':
        return logger
    else:
        raise ValueError('logger is undefined')
    pass


# 一个测试
def debug():
    # sys.argv[0] 指当前 .py 文件路径
    logger = get_logger()
    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')
    logger.critical('This is a critical message')



debug()

注意

一个 logger 可以拥有多个 handler,但是多个 handler 不能指向 1 个 log 文件,会引发文件占用相关的问题。

这也意味着,日志轮转策略,只能指定一个,按天或者按大小。

使用方式

上面的日志,是可以在别的文件引用的,引用方式如下

import logger_factory

logger = logger_factory.get_logger()

logger.info('Hello World')

日志格式

日志输出格式如下,按需调整

2024-11-26 16:04:49,359 [DEBUG] --- D:\seaboot\python\logger_factory.py: This is a debug message
2024-11-26 16:04:49,359 [INFO] --- D:\seaboot\python\logger_factory.py: This is an info message
2024-11-26 16:04:49,359 [WARNING] --- D:\seaboot\python\logger_factory.py: This is a warning message
2024-11-26 16:04:49,359 [ERROR] --- D:\seaboot\python\logger_factory.py: This is an error message
2024-11-26 16:04:49,359 [CRITICAL] --- D:\seaboot\python\logger_factory.py: This is a critical message

posted on   疯狂的妞妞  阅读(18)  评论(0编辑  收藏  举报

(评论功能已被禁用)
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示