3

这都是 Python。我仍在学习...

我为我的 Python 应用程序编写了两个模块:Module1Module2. 我需要将我的日志记录结果发送到三个不同的文件。Module1发送到setup.logsetupdetails.log文件并发Module2送到runall.log Module2 是我运行的应用程序。其中有一个调用 Module1 的导入语句。

因为我已经在 a 中配置了我的日志记录my_dictionary,所以哪个模块应该包含字典?哪个模块应该包含该logging.config.dictConfig(my_dictionary)功能?

你知道我在哪里可以找到一个很好的脚本和如何使用的例子dictConfig吗?

4

2 回答 2

4

所以,我终于想通了。

Module 1如果将字典放在子模块(和 set Propagate: True)中,这一切都很好。

MY_DICTIONARY = {
'version': 1,              
'disable_existing_loggers': False,
'formatters': {
    'verbose': {
        'format': '%(levelname)-8s %(asctime)s %(module)s %(process)d %(thread)d %(message)s',
        'datefmt': '%a, %d %b %Y %H:%M:%S'

    },
    'standard': {
        'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s',
        'datefmt': '%a, %d %b %Y %H:%M:%S'

    },
    'simple': {
        'format': '%(asctime)s %(levelname)-8s %(message)s',
        'datefmt': '%a, %d %b %Y %H:%M:%S'
    }
#etc.
}

}

随后是以下调用:

logging.config.dictConfig(MY_DICTIONARY)
vmrunalllogger = logging.getLogger('VMRunAll_Python_Logger')

然后在模块 2(父模块)中,有这个:

logging.config.dictConfig(MY_DICTIONARY)
mylogger = logging.getLogger('RunAll_Logger')

我找不到显示两个不同模块记录到多个文件的具体示例,就像我正在做的那样,但是来自多个来源的信息如下所示:

  1. 来自 Python 文档
  2. Stackoverflow.com 上的另一个问题
  3. 以及食谱中的例子
于 2013-07-30T15:53:09.650 回答
2

对于 dictConfig:

import logging.config
logging.config.dictConfig() #Your method.

就您需要做的事情而言,如果您发布一些代码可能会更容易。

一些文档

一个例子

于 2013-07-29T22:59:27.590 回答