我现在有:
FORMAT = '%(asctime)s - %(levelname)s - %(message)s'
logging.basicConfig(format=FORMAT, datefmt='%d/%m/%Y %H:%M:%S', filename=LOGFILE, level=getattr(logging, options.loglevel.upper()))
。。。很好,但是我想做的是:
FORMAT = '%(MYVAR)s %(asctime)s - %(levelname)s - %(message)s'
即使定义了MYVAR
,也会抛出键错误。
有解决办法吗?MYVAR
是一个常量,因此每次调用记录器时都必须传递它是一个遗憾。
谢谢你!
locals()应该返回本地可用的所有变量的字典,然后返回错误。 如果你在那里看不到它,那么它在本地是不可用的。这将证明它的定义不正确。我们需要更多的代码来查看它的定义是否不正确。或者您可以尝试“globals()”来检查全局的。。。。但是您可能没有将“global MYVAR”放在输出格式的定义中
您可以使用定制的
Filter
,正如unutbu
所说,也可以使用LoggerAdapter
:它给予
Jabberwocky 2013年4月25日07:39:52-警告-“Twas brillig,和slithy toves
或者,每次通话都要传递信息:
结果是一样的。
由于MYVAR实际上是常量,因此在您的情况下,
LoggerAdapter
方法需要的代码比Filter
方法少。您可以使用custom filter:
收益率
相关问题 更多 >
编程相关推荐