首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在python logging.basicConfig中使用TimedRotatingFileHandler作为文件名?

在Python的logging模块中,basicConfig函数主要用于快速配置日志记录系统。然而,basicConfig并不直接支持TimedRotatingFileHandler,因为它是用来进行基本配置的,而TimedRotatingFileHandler是一个更高级的日志处理器,用于按时间分割日志文件。

要使用TimedRotatingFileHandler,你需要手动创建一个日志记录器(logger),然后添加TimedRotatingFileHandler到这个记录器中。以下是一个示例代码:

代码语言:txt
复制
import logging
from logging.handlers import TimedRotatingFileHandler

# 创建一个日志记录器
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)  # 设置日志级别

# 创建一个TimedRotatingFileHandler,每天分割日志文件
handler = TimedRotatingFileHandler('my_log.log', when='midnight', interval=1, backupCount=30)
handler.setLevel(logging.DEBUG)  # 设置处理器的日志级别

# 创建一个格式化器,并将其添加到处理器
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)

# 将处理器添加到记录器
logger.addHandler(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')
logger.critical('This is a critical message')

在这个示例中,我们创建了一个名为my_logger的日志记录器,并设置了日志级别为DEBUG。然后,我们创建了一个TimedRotatingFileHandler,并设置了日志文件的名称、分割时间、分割间隔和保留的备份文件数量。接下来,我们创建了一个格式化器,并将其添加到处理器中。最后,我们将处理器添加到记录器中,并使用记录器记录了一些日志消息。

注意:在这个示例中,日志文件将在每天午夜时分割,并且保留最近30天的日志文件作为备份。

如果你想要在basicConfig中使用类似的功能,你可以考虑使用logging.config.dictConfiglogging.config.fileConfig来进行更高级的配置,但这需要额外的配置文件或字典来定义处理器、格式化器等。

参考链接:

  • Python官方文档 - logging模块:https://docs.python.org/3/library/logging.html
  • Python官方文档 - logging.handlers模块:https://docs.python.org/3/library/logging.handlers.html
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python logging 较佳实践

只是便于 debug 的详细日志使用 debug(),某变量的值 常规通知性信息使用 info(),某接口有新请求 有可能非正常的程序行为(如不推荐的输入)但是又不至于程序崩溃报错,使用 warning...有如下参数可供配置: filename:日志文件名 when、interval 和 atTime:[共同](https://docs.python.org/3/libr ary/logging.handlers.html...使用配置文件 根据官方文档,开发者有三种方式来配置 logging: 使用 Python 代码显式创建 logger、handler 和 formatter, logging.basicConfig(...文件采用 TimedRotatingFileHandler,每天凌晨 rollover,UTF8 编码,文件名为 app.log,日志等级为 DEBUG 日志格式为 %(asctime)s - %(name...,例子的 console 和 file。

82620
  • python报错提示以及logger的一些应用

    stopifnot 参考博客:Python 何时使用断言?...报错并提示异常信息 来源:Python获取异常(Exception)信息 1、str(e) 返回字符串类型,只给出异常信息,不包括异常信息的类型,1/0的异常信息 ‘integer division...Logger.exception通过用在异常处理块: 来源:Python模块学习:logging 日志记录 import logging logging.basicConfig(filename...这里使用了+—name—+是将log命名为当前py的文件名 Format:设置log的显示格式(即在文档中看到的格式)。...分别是时间+当前文件名+log输出级别+输出的信息 Level:输出的log级别,优先级比设置的级别低的将不会被输出保存到log文档 Filemode: log打开模式 a:代表每次运行程序都继续写

    57620

    python logging模块按日期打

    官网https://docs.python.org/2/library/logging.html文档 一 简单日志打印: import logging logging.basicConfig(level...()函数可通过具体参数来更改logging模块默认行为,可用参数有 filename:用指定的文件名创建FiledHandler(后边会具体讲解handler的概念),这样日志会被存储在指定的文件...filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。 format:指定handler使用的日志显示格式。...调用日志输出函数的模块的完整路径名,可能没有 %(filename)s 调用日志输出函数的模块的文件名 %(module)s 调用日志输出函数的模块名 %(funcName)s 调用日志输出函数的函数名...可能没有 %(message)s用户输出的消息 二,只输出到文件不在ternimal打印 import logging from logging.handlers import TimedRotatingFileHandler

    4.6K20

    python 写日志

    简单配置使用 # -*- coding:utf-8 -*- import logging # 通过下面的方式进行简单配置输出方式与日志级别 logging.basicConfig(filename=...basicConfig关键字参数 关键字 描述 filename 创建一个FileHandler,使用指定的文件名,而不是使用StreamHandler。...filemode 如果指明了文件名,指明打开文件的模式(如果没有指明filemode,默认为’a’)。 format handler使用指明的格式化字符串。...()函数可通过具体参数来更改logging模块默认行为,可用参数有 filename:用指定的文件名创建FiledHandler(后边会具体讲解handler的概念),这样日志会被存储在指定的文件...在实际应用,我们通常根据时间进行滚动,因此,本文中主要介绍TimeRotaingFileHandler的使用方法(RotatingFileHandler一样)。

    1.1K10

    Python 日志(Log)

    (**kwargs) 对root logger进行一次性配置 logging.basicConfig(**kwargs) 对root logger进行一次性配置 只在第一次调用的时候起作用...—实例化:logging.getLogger() 处理器(Handler):把产生的日志发送到相应的目的地 logging.StreamHandler ——将日志消息发送到输出到Stream,std.out...:指定日期格式字符串,如果不指定该参数则默认使用"%Y-%m-%d %H:%M:%S" style:Python 3.2新增的参数,可取值为 '%', '{'和 '$',如果不指定该参数则默认使用'%'...需求 现在有以下几个日志记录的需求: 1)要求将所有级别的所有日志都写入磁盘文件 2)all.log文件记录所有的日志信息,日志格式为:日期和时间 - 日志级别 - 日志信息...3)error.log文件单独记录error及以上级别的日志信息,日志格式为:日期和时间 - 日志级别 - 文件名[:行号] - 日志信息 4)要求all.log在每天凌晨进行日志切割 2.

    74240

    Celery的日志配置及日志按天切分

    Celery定时任务启动 1.Celery定时任务的启动是通过命令启动的,可以通过-f logfilename或–logfile=logfilename指定日志保存的文件名,可以通过-loglevel=...二. celery日志配置 1.python进行日志管理的模块为logging, celery的日志也是用logging实现的,如果我们将需要的内容写到日志文件,也是使用logging实现,下面就通过代码来实现...三、通过外部配置实现celery日志切分 1.设置好以上相关配置后,在main.py所在目录启动定时任务,发现日志写入到了文件,但是并没有按我们想要的结果进行切分(直接在配置中使用日志,或直接调用任务函数都可以实现切分...crontablog.log 原因是celery并没有帮我们实现切分日志的功能,以上TimedRotatingFileHandler的配置没有生效 2.所以要实现日志切分,需要使用其他方法,以使上面配置在...config.pyTimedRotatingFileHandler设置生效 3.在/etc/logrotate.d/目录下创建日志外部切分的配置文件celery,通过外部方式对日志文件进行切分 #

    4.2K40

    Python服务端开发

    之前的爬虫https://blog.csdn.net/column/details/17218.html几篇文章为Python实现客户端以Get/Post等方法请求服务。...最近用Python写了一个服务,在此总结一下知识点: 1、Python代码执行shell命令; 2、白名单设置---通过查看客户端ip是否在服务端的list存在; 3、日志分割---引入loggin...# 客户端白名单,白名单的机器可以访问该服务 WHITE_LIST = ['127.0.0.1'] # 操作日志记录 # 1、logging.basicConfig(level, format...datefmt: 指定时间格式,【'%a, %d %b %Y %H:%M:%S'】 # filename: 指定日志文件件 # filemode: 指定日志文件的打开模式,'w'或'a' logging.basicConfig...# 2、TimedRotatingFileHandler(filename [,when [,interval [,backupCount]]]) # filename 是输出日志文件名的前缀,比如

    84140

    logging日志模块的使用以及多进程日志的改写 python

    本文主要用于介绍python logging的基本使用 一 logging日志模块的介绍 1. logging是python的第三方模块, python logging官方文档 下面列出了模块定义的基本类及其功能...日志输出格式也简单 INFO:root:info message # 导入logging 模块 import logging # 设置logging的级别和日志文件名 logging.basicConfig...logging支持很多的输出格式 日志输出显示: [2019-05_13 23:08:01]|MainProcess|MainThread|INFO|python.py:13||logging...使用 handlers 模块同时将日志输出到控制台和日志文件,同时设置日志为每天一个日志文件 输出文本: 2019-05-13 23:33:15,964|MainProcess|MainThread|...,一旦多进程使用,就会出现第二天的日志只会有一个进程的日志输出到最新文件,其他的日志依旧在旧的日志文件输出,无法跳转到新的日志文件,所以就需要自定义新的多进程logging日志 具体代码就不详细讲解了

    57220

    python 日志模块logging学习

    python中用于日志创建、设置和记录等功能的模块,就是logging了,下面是对其基本使用方法的介绍: 一、最最简单的使用方法: import logging LOG_FILE = "/opt/...# LOG_FILE是一个全局变量,它就是一个文件名:'crawl.log' LOG_FILE = "/opt/xxx/log/debug.log" hdlr = logging.FileHandler...logging.debug('debug') 上面代码使用方式,可以指定日志的级别和格式,可用于区分开发环境和用户环境中日志的级别,减少不必要的空间浪费。...这就需要我们对日志进行分割,分割形式有两种:RotatingFileHandler(按照文件大小分割)、TimedRotatingFileHandler(按照时间间隔分割) 以第二个例子的代码为基础...,按照时间间隔分割的使用方法:hdlr = logging.handlers.TimedRotatingFileHandler(LOG_FILE,when='M',interval=1,backupCount

    63730

    Python日志库logging总结-可能是目前为止将logging库总结的最好的一篇文章

    每个 Logger 对象都可以设置一个名字,如果设置logger = logging.getLogger(__name__),__name__ 是 Python 的一个特殊内置变量,他代表当前模块的名称...则 Logger 对象的 name 为建议使用使用以点号作为分隔符的命名空间等级制度。...)s 不包含路径的文件名 pathname %(pathname)s 包含路径的文件名 funcName %(funcName)s 日志记录所在的函数名 levelname %(levelname)s...文件时, import test.py,在满足大于当前设置的日志级别后就会输出导入文件的日志。...总结:Python logging 库设计的真的非常灵活,如果有特殊的需要还可以在这个基础的 logging 库上进行改进,创建新的 Handler 类解决实际开发的问题。

    41.1K146

    Python - 日志处理(logging模块)

    ===CRITICAL+++++This is a critical log. ``` - format 参数 asctime %(asctime)s 日志事件发生的时间--人类可读时间,:...(pathname)s 调用日志记录函数的源码文件的全路径 filename %(filename)s pathname的文件名部分,包含文件后缀 module %(module...,Handler是基类 logging.StreamHandler 将日志消息发送到输出到Stream,std.out, std.err或任何file-like对象。...datefmt:指定日期格式字符串,如果不指定该参数则默认使用"%Y-%m-%d %H:%M:%S" style:Python 3.2新增的参数,可取值为 '%', '{'和 '$',如果不指定该参数则默认使用...3) error.log文件单独记录error及以上级别的日志信息,日志格式为:日期和时间 - 日志级别 - 文件名[:行号] - 日志信息 4) 要求all.log在每天凌晨进行日志切割 '

    91387

    python 日志模块 logging 详解

    Java 中最通用的日志模块莫过于 Log4j 了,在 python ,也自带了 logging 模块,该模块的用法其实和 Log4j 类似。...Python 使用logging模块记录日志涉及四个主要类,使用官方文档的概括最为合适: logger提供了应用程序可以直接使用的接口; handler将(logger创建的)日志记录发送到合适的目的输出...Python的日志系统有多种Handler可以使用。有些Handler可以把信息输出到控制台,有些Logger可以把信息输出到文件,还有些 Handler可以把信息发送到网络上。...它的构造函数是: FileHandler(filename[,mode]) filename是文件名,必须指定一个文件名。 mode是文件的打开方式。参见Python内置函数open()的用法。...不同的是前者使用TCP协议,后者使用UDP协议。

    2.2K70

    Python入门之logging日志模块以及多进程日志

    本篇文章主要对 python logging 的介绍加深理解。更主要是 讨论在多进程环境下如何使用logging 来输出日志, 如何安全地切分日志文件。...1. logging日志模块介绍 python的logging模块提供了灵活的标准模块,使得任何Python程序都可以使用这个第三方模块来实现日志记录。...python由于某种历史原因,多线程的性能基本可以无视。所以一般情况下python要实现并行操作或者并行计算的时候都是使用多进程。...但是 python logging 并不支持多进程,所以会遇到不少麻烦。 本次就以 TimedRotatingFileHandler 这个类的问题作为例子。...解决方案1 先前我们发现 TimedRotatingFileHandler 逻辑的缺陷。

    5.2K80
    领券