python logging模块的分文件存放详析

 更新时间:2022年07月15日 15:38:19   投稿:hqx  
这篇文章主要介绍了python logging模块的分文件存放详析,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下

前言:

如果使用进到的日志文件方法:logging.FileHandler,会导致日志信息全部存放在一个日志文件中,不利于后面对日志文件的使用。
下面分享常见的两种分文件存储日志的方法。
delay = True 参数避免了出现多进程中读取日志权限的问题

TimedRotatingFileHandler 根据时间创建日志文件

TimedRotatingFileHandler(filename, when='h', interval=1, backupCount=0, encoding=None, delay=False, utc=False, atTime=None)

atTime 与 when参数之间的关系

RotatingFileHander 根据日志文件大小创建日志文件

RotatingFileHandler(filename, mode='a', maxBytes=0, backupCount=0, encoding=None, delay=False)

分文件时,PermissionError异常处理

异常信息:

--- Logging error ---
 Traceback (most recent call last):
 '省略部分信息'
 PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。

解决方法:

设置 delay=True使用第三方库 concurrent_log_handler.ConcurrentRotatingFileHandler

代码实现:customer_log.py

import logging
from logging import handlers
from concurrent_log_handler import ConcurrentRotatingFileHandler
def set_basic_logger():
    path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    log_path = path + '/Log/'
    log_file = log_path + 'mockSystem.log'
    err_file = log_path + 'mockSystemErr.log'
    
    # 定制输出格式
    formatter = logging.Formatter(
        '[%(asctime)s] %(filename)s -> %(funcName)s line:%(lineno)d [%(levelname)s] : %(message)s')

    # # 所有日志在一个文件中存储
    # handler = logging.FileHandler(log_file, encoding='utf-8', mode='a+')
    # 按天分文件存储,保存最近30天的日志
    handler = handlers.TimedRotatingFileHandler(log_file, when='d', interval=1, backupCount=30, encoding='utf-8', delay=True)
    # 按文件大小分文件存储,每个文件10字节,保留10个文件
    # handler = handlers.RotatingFileHandler(log_file, maxBytes=10, backupCount=10,
    #                                        encoding='utf-8', delay=True)
    # 按文件大小分文件存储,每个文件10字节,保留10个文件
    # handler = ConcurrentRotatingFileHandler(log_file, maxBytes=10, backupCount=10)
    handler.setLevel(logging.INFO)
    handler.setFormatter(formatter)
    # err_handler = ConcurrentRotatingFileHandler(err_file, encoding='utf-8', mode='a+')  # 输出到err_log文件
    err_handler = handlers.TimedRotatingFileHandler(err_file, when='d', interval=1, backupCount=30,
                                                   encoding='utf-8', delay=True)
    # err_handler = handlers.RotatingFileHandler(err_file, maxBytes=10, backupCount=10,
    #                                            encoding='utf-8', delay=True)
    # err_handler = ConcurrentRotatingFileHandler(err_file, maxBytes=10, backupCount=10)
    err_handler.setLevel(logging.WARNING)
    err_handler.setFormatter(formatter)

    logging.basicConfig(
        level=logging.DEBUG,
        format='[%(asctime)s] %(filename)s -> %(funcName)s line:%(lineno)d [%(levelname)s] : %(message)s',
        handlers=[handler, err_handler]
    )

在项目主程序中使用时:main.py

from customer_log imoprt set_basic_logger
import mu
set_basic_logger()
mu.show_cur_info()

在项目其他模块使用时:mu.py

import logging
def show_cur_info():
	msg = 'dddddd'
	print(msg)
	logging.info(msg

到此这篇关于python logging模块的分文件存放详析的文章就介绍到这了,更多相关python logging模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Django中反向生成models.py的实例讲解

    Django中反向生成models.py的实例讲解

    今天小编就为大家分享一篇Django中反向生成models.py的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • python实现CTC以及案例讲解

    python实现CTC以及案例讲解

    这篇文章主要介绍了python实现CTC以及案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • Python编写条件分支代码方法

    Python编写条件分支代码方法

    这篇文章主要介绍了Python编写条件分支代码方法,编写条件分支代码是编码过程中不可或缺的一部分,更多详细介绍需要的小伙伴可以参考下面文章内容
    2022-05-05
  • Python中文件的读取和写入操作

    Python中文件的读取和写入操作

    这篇文章主要介绍了Python中文件的读取和写入操作,从文件中读取数据的操作方法,本文通过实例文字相结合的形式给大家介绍的非常详细,需要的朋友可以参考下
    2018-04-04
  • 11个案例讲透Python函数参数小结

    11个案例讲透Python函数参数小结

    本文主要介绍了11个案例讲透Python函数参数小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Python pyecharts Map地图数据不显示的原因及完美解决

    Python pyecharts Map地图数据不显示的原因及完美解决

    这篇文章主要给大家介绍了关于Python pyecharts Map地图数据不显示的原因及解决办法,pyecharts是一款将python与echarts结合的强大的数据可视化工具,文中通过图文以及代码示例介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • 用 Python 脚本实现电脑唤醒后自动拍照并截屏发邮件通知

    用 Python 脚本实现电脑唤醒后自动拍照并截屏发邮件通知

    这篇文章主要介绍了用 Python 脚本实现电脑唤醒后自动拍照并截屏发邮件通知,文中详细的介绍了代码示例,具有一定的 参考价值,感兴趣的可以了解一下
    2023-03-03
  • 自动转换Python代码为HTML界面的GUI库remi使用探究

    自动转换Python代码为HTML界面的GUI库remi使用探究

    这篇文章主要为大家介绍了自动转换Python代码为HTML界面的GUI库remi使用探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Python使用xpath对解析内容进行数据提取

    Python使用xpath对解析内容进行数据提取

    XPath 使用路径表达式来选取HTML/ XML 文档中的节点或节点集,节点是通过沿着路径 (path) 或者步 (steps) 来选取的,本文将给大家介绍Python使用xpath对解析内容进行数据提取的方法,需要的朋友可以参考下
    2024-05-05
  • python时间日期相加减的实现示例

    python时间日期相加减的实现示例

    在实际开发中,我们经常需要对日期进行加减操作,本文主要介绍了python时间日期相加减的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02

最新评论