自定义日志记录类python范围

时间:2014-04-28 08:22:57

标签: python scope

需要考虑以下开发环境。

少量的python模块,每个模块包含一个或多个类。一个主模块,调用这些类。一个名为logger的自定义日志记录模块,其中包含一个名为Logger的类。假设我使用debug的日志记录级别调用主执行类。我怎样才能使这个日志级别继承到每个其他调用,包括其余的类,这些类中的方法,主模块中的函数等等......

Logger对象被称为log=Logger(0),例如(日志级别是一个int,使用我们在其他脚本中使用的相同语法(shell脚本,而不是python)。

我的最后一张照片是让代码填充log.log_debug('debug message')log.log_error('error message'),但只有在选择了右log_level时才会实际打印一条消息。如果可能,只需一个

from logger import Logger

在主模块内调用。

感谢您的时间。

==================================

修改

在主执行模块中有一个main()函数,其中返回带有参数parser.parse_args()的{​​{1}}对象,以全局定义(至少是我的意图){{1} }}。有一个默认的--log_level处理(即,它总是被定义)

我会尝试模拟一个最小的例子

log_level

[*]其中一种方法可能会调用一个log_level对象,我希望该对象与import argparse from logfile from Logfile from logger import Logger def argument_parser(): parser=argparse.ArgumentParser() stuff return parser.parse_args() def log_file_stuff(): log_file=Logfile() log_file.methods() [*] def main(): args=argument_parser() # Here log_level is defined with args.log_level global log log=log(log_level) log_file_stuff() main() 函数中定义的对象完全相同问题是我怎么能实现这个?没有日志返回和参数瀑布

1 个答案:

答案 0 :(得分:0)

很好地回答我自己的问题......我实际上实现了一个交叉模块变量字典以将其用作设置。这些设置只有log_level变量子,只有

from main import settings
from logger import Logger

log=Logger(settings['log_level'])

然后我有自定义日志记录类,用户输入log_level。当然,settings是使用argparse构建的,主要是vars(args)跟随问题中的符号。