python包中log.conf的最佳位置

时间:2016-06-22 03:20:07

标签: python logging package

我在编写python包时使用本机日志实用程序。 logging.conf的最佳位置是什么?

我有以下包结构

/package
 setup.py
 .gitingore
 ....
 /dist
     __init__.py
     dosomething.py
     /utils
         /submodule1
             submodule1.py
         /logger
             log.py
 /tests
    ...

我想将logging.conf放入logger模块或包根目录中吗?还有更好的地方吗?

1 个答案:

答案 0 :(得分:1)

不容易回答。我发布这个是因为它的评论时间太长了。

答案可能取决于您的软件包的其余部分(例如,您只有这个conf文件,还是其他一些文件?可能会在某天后显示其他conf文件?)。

以下是我如何组织这个。虽然我不能说它是最好的组织(我不知道其他人有没有比我更好的方式),但它很适合我的需求,我认为分享它可能会有所帮助。我必须回答你的问题以外的问题"在哪里放 it ?"因为我使用多个文件进行相同的设置(但用于不同的目的,见下文)。

到目前为止,我发现在同一目录中收集所有不同的conf文件很好(这允许设置一个包含所有设置路径的变量,而不是一堆变量,一个用于日志设置,一个用于某些包装的具体设置等。)。

同样适用于只有一个conf文件:如果以后需要另一个conf文件,我知道我可以把它放在哪里,我可以使用已经包含正确路径的变量。

在您的示例中,我会将它们放在package/dist/settings/default/中并留下完整的默认配置,由git(或您的VCS)跟踪,例如默认工作状态"状态",包在生产中使用时可以使用。该文件不应由用户更改。然后在package/dist/settings/dev/我把#34; dev"版本(由git未跟踪),我可以在开发时更改配置以满足我的需求,而不会被git随时打扰(同时保持default/目录中的默认设置不变)。这对于调试设置特别有用,因为它们经常更改。 (然后,虽然它们对于仅记录的conf文件并不感兴趣,但我提到系统范围的conf文件可以存储在/etc/mypackage/中,并且用户的重新定义的设置可以存储在~/.config/my_package/)。

加载设置时,我的包首先加载默认配置,以确保定义所有值。然后,如果/etc/mypackage/中有任何配置文件,然后是~/.config/my_package/,最后是package/dist/settings/dev/,它会连续检查。每次找到一个时,它都会覆盖(可能)重新定义的值。 (因为我的配置文件都是用yaml编写的,所找到的每个现有文件都是作为字典加载的,我只是update这些新值的默认配置。这样,我只能在开发中更改我喜欢的设置配置;不提及其他人会将它们设置为默认值。)

了解更多内容的一个好方法是浏览现有项目并了解其他人的工作方式。