【发布时间】:2012-10-18 09:47:32
【问题描述】:
我正在使用 python 的日志记录模块。
在单元测试的情况下(我们使用 py.test),每次启动测试时,一些日志信息都会进入某个文件。在集成服务器中,每次有人推送代码(我们也使用 git :) 我们运行测试。
问题是,一旦用户 A 创建了文件,当用户 B 尝试运行测试时,测试将失败,因为用户 B 无权在同一文件上写入。
到目前为止,我们已经手动更改了文件权限,但看起来像是一个肮脏的解决方案。此外,我们虽然为每个用户创建一个日志文件,但同样感觉不对。
我们的测试记录代码是
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
datefmt='%m-%d %H:%M',
filename='/tmp/py.test.log',
filemode='w')
log.setLevel(logging.DEBUG)
log.addHandler(logging.StreamHandler())
有没有办法避免这个问题?也许使用 filemode = 'a' 可以做到,但假设我每次都想要一个新文件(老实说,这是一个真正的问题,但我仍然想正确地做这件事)
谢谢:)
【问题讨论】:
-
如何将用户名添加到文件名中,以便每个用户获得自己的单独副本?
-
@MarcB 正如我在问题“我们虽然为每个用户创建一个日志文件,但同样感觉不对”中所说的那样。我只是想知道我们是否可以为每个人使用相同的日志。
-
每次测试增加日志文件名?
-
请参阅Logging to a single file from multiple processes 虽然单个文件在您的情况下似乎没有用,除非您登录到多个目的地
-
@AlexL 再次,正如我在“我们虽然为每个用户创建一个日志文件,但再次感觉不对”的问题上所说的那样。创建不同的日志文件以某种方式被丢弃。
标签: python linux logging file-permissions