文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python logging模块怎么分文件存放

2023-07-02 19:00

关注

这篇文章主要介绍“python logging模块怎么分文件存放”,在日常操作中,相信很多人在python logging模块怎么分文件存放问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python logging模块怎么分文件存放”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

前言:

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

TimedRotatingFileHandler 根据时间创建日志文件

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

python logging模块怎么分文件存放

atTime 与 when参数之间的关系

python logging模块怎么分文件存放

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

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

python logging模块怎么分文件存放

分文件时,PermissionError异常处理

异常信息:

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

解决方法:

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

代码实现:customer_log.py

import loggingfrom logging import handlersfrom concurrent_log_handler import ConcurrentRotatingFileHandlerdef 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_loggerimport muset_basic_logger()mu.show_cur_info()

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

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

到此,关于“python logging模块怎么分文件存放”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯