使用配置文件配置python日志记录

时间:2013-12-12 07:24:08

标签: python logging

在我尝试解释我的设置时,请耐心等待。

我的应用程序结构如下

1。)主要代理人 2.)支持模块 3.)BY MODULES呼吁的各种ClASSES

这是一个基本上基本上设置我的日志记录的脚本。

logging_setup.py - 通过这个脚本,我使用上下文过滤器和其他类设置自定义格式。它的片段如下。

class ContextFilter(logging.Filter):
  CMDID_cf="IAMTEST1"
  def __init__(self, CMDID1):
    self.CMDID_cf=CMDID1

  def filter(self,record):
    record.CMDID=self.CMDID_cf
    return True

class testFormatter(logging.Formatter):
  def format(self,record):
  record.message=record.getMessage()
  if string.find(self._fmt,"%(asctime)") >= 0:
    record.asctime = self.formatTime(record, self.datefmt)

  if threading.currentThread().getName() in cmdidDict:
    record.CMDID=cmdidDict[threading.currentThread().getName()]
  else:
    record.CMDID="Oda_EnvId"
    return self._fmt % record.__dict__

def initLogging(loggername)     
  format=testFormatter(*some format*)
  *other configuration settings*

所以我基本上有两个问题我认为可以使用我不知道如何正确实现它们。

1。)我希望我的MAIN AGENT Logger具有logging_setup脚本设置的格式和其他配置,同时我希望MODULES记录具有来自不同配置文件的配置集的消息。 因此,简而言之,可以记录到同一文件的两个模块具有从两个不同源设置的不同配置。 附:我正在使用logger.getLogger()调用来获取每个模块中的记录器。

2。)如果以上是不可能的(或者即使它是),我如何使配置文件包含复杂的格式?即如何更改以下配置文件,以便它将以与logging_Setup.py相同的方式设置格式。

我当前的配置文件是:

[loggers]
keys=root,testAgent,testModule

[formatters]
keys=generic

[handlers]
keys=fh

[logger_root]
level=DEBUG
handlers=fh

[logger_testAgent]
level=DEBUG
handlers=fh
qualname=testAgent
propagate=0

[logger_testModule]
level=ERROR
handlers=fh
qualname=testAgent.testModule.TEST
propagate=0

[handler_fh]
class=handlers.RotatingFileHandler
level=DEBUG
formatter=generic
maxBytes=1000
args=('spam.log',)


[formatter_generic]
format=%(asctime)s %(name)s %(levelname)s %(lineno)d %(message)s

我希望我试图澄清这个问题。 谢谢!

0 个答案:

没有答案