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

时间:2012-02-28 14:58:05

标签: python logging filehandler

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

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

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

logging.config.fileConfig(os.path.join(sys.path[0], 'logger.conf'))

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

[handler_fileHandler]
class=FileHandler
level=DEBUG
formatter=fileFormatter
args=('echi_export.log', 'a',)

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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

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