如何在Python日志配置文件中指定相对路径?

11

我有以下文件来配置日志记录:

[loggers]
keys=root

[handlers]
keys = root

[formatters]
keys = generic

# Loggers
[logger_root]
level = DEBUG
handlers = root

# Handlers
[handler_root]
class = handlers.RotatingFileHandler
args = ("test.log", "maxBytes=1*1024*1024", "backupCount=10")
level = NOTSET
formatter = generic

# Formatters
[formatter_generic]
format = %(asctime)s,%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s
datefmt = %Y-%m-%d %H:%M:%S

在开发环境中这很好用,但当我部署应用程序时,test.log 将尝试被写入到我没有必要的权限的路径中。

因此我的问题是:如何在配置文件中指定相对路径。


2
这里test.log已经是相对路径了 - 如果在这里放入更完整的相对路径会发生什么? - mmmmmm
2个回答

7

Mark是对的,配置文件中的路径是相对于调用logging.config.fileConfig时当前目录的。这取决于您部署的详细方法。

您可能需要指定绝对路径到您的文件,通过在‘test.log’前面加上一个您知道代码运行进程可写的目录。

另一个问题可能仅仅是Django进程运行用户的权限问题:通常在运行开发服务器时它将在您的账户下运行,您通常不会遇到权限问题。当部署时(例如使用Apache和mod_wsgi),Apache进程和/或mod_wsgi守护进程将使用不同的账户进行运行,并且可能需要被赋予相关目录的权限。

如果您需要更多帮助,请提供有关部署方法、日志文件目录位置等详细信息。


好的,没问题,我会添加测试日志的绝对路径并继续前进 :) 我只是想知道是否有更改指定配置文件相对路径的方法 :) - Claudio Acciaresi

0

稍微梳理一下,配置文件中指定的日志文件实际上是相对于程序运行的位置。例如,当我部署我的Apache服务器在根目录 "/path/to/root" 运行时,你指定的日志配置将尝试写入 "/path/to/root/test.log"。

进一步查看此帖子: 在Python日志配置文件中使用程序变量


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