首页 > 编程语言 >python - logger

python - logger

时间:2024-12-05 17:45:34浏览次数:6  
标签:logging python handler logger message 日志

日志配置

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

标签:logging,python,handler,logger,message,日志
From: https://www.cnblogs.com/chenss15060100790/p/18589046

相关文章

  • python - mysql交互
    python与mysql交互,能找到两个库pymysql和mysql-connector-python因为两个都是基于DB-API2.0标准‌,使用上差别并不大,区别就是mysql-connector-python是由Oracle官方提供,性能可能会好一些。安装依赖pipinstallmysql-connector-python事务(update)importmysql.co......
  • python - with
    with用法很像java中的try(){}代码块,调用对象之后,会自动执行资源释放函数。在python中,要使用with语句,需要实现两个特殊方法:__enter__和__exit__。比如:classSession:def__enter__(self):print("Enteringcontext")returnself#返回上下文管......
  • python - 安装pip插件
    功能:安装各种插件,功能与maven类似windows环境下,安装包中自带这个插件,检查路径./Scripts,如果包含pip.exe文件,则无须安装安装官网:https://pip.pypa.io/en/stable/installation/Downloadthescript,fromhttps://bootstrap.pypa.io/get-pip.py.Openaterminal/command......
  • OpenCV实现文档扫描OCR识别(基于Python + OpenCV,含完整代码)
    OpenCV文档扫描OCR识别一、引言在当今数字化时代,文档处理的自动化需求日益增长。文档扫描OCR(OpticalCharacterRecognition,光学字符识别)技术成为了将纸质文档转换为可编辑电子文本的关键手段。通过Python与OpenCV库的结合,我们能够实现高效、准确的文档扫描OCR识别。这一......
  • python学opencv|读取图像(二)保存彩色图像
    【1】引言前序学习过程中,已经掌握了读取图像的基本操作,对三个函数的功能有了基本了解:cv.imread()、cv.imshow()、cv.imwrite()学习文章链接为:python学opencv|读取图像-CSDN博客不过这篇文章里,我们获得的图像是灰度图。如果需要彩色图,那又如何处理,这就是本次课程的目的。......
  • Python 装饰器
    基本概念装饰器是一种强大的工具,允许你在不修改原有函数或方法代码的情况下,给其增加额外的功能。装饰器本质上是一个函数,它接受一个函数作为参数并返回一个新的函数。基本语法defmy_decorator(func):defwrapper(*args,**kwargs):print('函数运行之前')......
  • (2024最新毕设合集)基于SSM的河北省博物馆管理系统-02350|可做计算机毕业设计JAVA、PHP
    目 录摘要1绪论1.1选题背景与意义1.2国内外研究现状1.3论文结构与章节安排2 河北省博物馆管理系统系统分析2.1可行性分析2.1.1技术可行性分析2.1.2 经济可行性分析2.1.3操作可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能性分析......
  • 基于python爬虫的豆瓣电影推荐系统
    私信我获取源码和万字论文,制作不易,感谢点赞支持。目  录1团队建设1.1团队的任务和目标1.2团队制度1.3团队任务分配1.4项目进度安排2需求分析2.1国内外研究现状2.2研究背景与意义2.3功能分析和性能分析2.4用例图2.5类图2.6系统E-R图......
  • 停车场车位识别:基于Python和OpenCV(含完整代码)
    停车场车位识别:基于Python和OpenCV一、引言在现代城市生活中,停车场的管理效率对于解决交通拥堵和提升用户体验至关重要。停车场车位识别技术作为智能化停车场管理的核心部分,能够自动检测和识别停车场中的空闲车位,为车主提供便捷的停车引导,同时也便于停车场管理者进行资源......
  • Python如何将Excel数据导入到MySQL数据库?详细教程与实战示例
    在数据处理和分析的过程中,我们常常需要将Excel数据导入到MySQL数据库中,以便进行更高效的查询和管理。那么,如何利用Python实现这一过程呢?本文将深入探讨Python将Excel数据导入到MySQL数据库的方法,并提供详细的教程和实战示例。无论您是初学者还是有经验的开发者,都可以通过本文掌......