配置Python的logging.FileHandler的正确方法是什么?

lub*_*dza 1 python logging filehandler

我编写了一个小型 Python 脚本,用于处理夜间转换和音频数据归档。由于在此过程中出现了一些意想不到的问题(文件不存在、与数据库服务器的连接不可靠等等...),我添加了 Python 自己的日志记录工具来跟踪遇到的任何问题。

问题是,日志文件是在脚本运行的任何地方创建的(例如当前工作目录),所以我有两个日志文件,一个在我的主目录中(由 cron 运行脚本时使用),另一个在脚本自己的目录中目录(调试时使用)。我更喜欢将日志文件和配置文件保存在与脚本相同的目录中。

我在这里加载记录器的配置:

logging.config.fileConfig(os.path.join(sys.path[0], 'logger.conf'))
Run Code Online (Sandbox Code Playgroud)

...这是我的相关部分logger.conf

[handler_fileHandler]
class=FileHandler
level=DEBUG
formatter=fileFormatter
args=('echi_export.log', 'a',)
Run Code Online (Sandbox Code Playgroud)

绝对路径确实有效,但我有点不愿意使用它们。

简而言之,使用 Pythonlogger模块(尤其是 FileHandler)配置文件日志记录的正确方法是什么?一些现实世界的例子就足够了。

lub*_*dza 6

所以,显然我可以在配置文件中使用 Python 表达式:

[handler_fileHandler]
  <snip>
args=(os.path.join(sys.path[0],'echi_export.log'), 'a',)
Run Code Online (Sandbox Code Playgroud)

这会导致在脚本所在的同一目录中创建日志文件。

os.path.dirname(__file__)解析为/usr/lib/python2.7/logging/在我的系统上,这可能是日志记录模块所在的位置)。