Python中如何在日志配置文件中设置文件模式?

4
我将为您翻译以下内容:

我正在尝试使用Python在文本配置文件中配置日志记录器。以下是部分内容:

[logger_root]
handlers=result
level=NOTSET

[handler_result]
class=handlers.TimedRotatingFileHandler
interval=midnight
backupCount=5
formatter=simple
level=DEBUG
args=('result_log.txt')

每次运行系统时,我希望能重写日志文件。但是不知道如何在文件中设置它。我尝试了这个方法但失败了:

args=('result_log.txt',filemode='w')

很多文章都讲述了如何在Python代码中进行设置。但我想在文件中进行设置。要怎么做呢?谢谢。
=======================================
编辑:我可以通过以下方式将一些信息写入日志文件“result_log.txt”:
result_logger = logging.getLogger('result')
result_logger.debug("info to write")

但是我只能“追加”文件。我希望每次运行时都能重写文件。


你想在 result_log.txt 文件中写入什么内容? - Ashwini Chaudhary
3个回答

2
你可以使用以下两种方法之一:-
  1. 备份旧的日志文件并使用RotatingFileHandler创建一个新文件

  2. 替换文件本身(前提是你不需要旧的日志了)。你可以查看这个链接中的步骤

希望这有所帮助。

谢谢。但是我想在每次运行后将日志文件复制到其他地方。所以我不介意重写旧日志。我希望能够自动重写。 - Joy
如果是这种情况,您应该能够通过在每次运行程序时删除处理程序并重新分配它来完成。请参阅我提供的链接。 - gkris
在您提供的链接中,我需要明确指定文件处理程序,这不是我想要的。我想在配置文件中只给出日志文件名,而不是在任何Python代码中。 - Joy
您可以使用RotatingFileHandler,这样每次执行代码时就不必移动它。您可以将该处理程序用于无限长度的文件。当您尝试打开文件时,还可以尝试截断文件以重置它。 - gkris

0

你可以使用下面的方法,而不是使用日志记录模块吗?

open("result_log.txt", "w").write("result")

我明白这只是一个临时解决方案,直到有人能够更好地回答这个问题。

希望这可以帮到你 :)


谢谢您的回复。但是日志记录器有很多好处,也许您想查看Python日志记录 - Joy

0
事实上,你可以从配置文件中设置filemode为w。你只需要删除显式参数命名,像这样:

args=('result_log.txt','w')


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接