调用logger.setL时使用变量

2024-05-15 09:15:59 发布

您现在位置:Python中文网/ 问答频道 /正文

有人知道在Python的日志模块的setlevel()函数中是否有使用变量的方法吗?

目前我正在使用:

Log = logging.getLogger('myLogger')
Log.setLevel(logging.DEBUG)

但我想要这个:

Log = logging.getLogger('myLogger')
levels = {'CRITICAL' : logging.critical,
    'ERROR' : logging.error,
    'WARNING' : logging.warning,
    'INFO' : logging.info,
    'DEBUG' : logging.debug
}
level = levels['INFO']
Log.setLevel(level)

但它似乎不起作用-它只是不记录任何东西。

我这样做是为了从一个配置文件中的一个变量设置一大堆脚本的日志级别。


Tags: 模块方法函数debuginfologlogginglevel
3条回答

我在使用python 3时遇到了一些问题,并让它为我工作: https://docs.python.org/3/howto/logging.html

# myapp.py
import logging
import mylib

def main():
    logging.basicConfig(filename='myapp.log', level=logging.INFO)
    logging.info('Started')
    mylib.do_something()
    logging.info('Finished')

if __name__ == '__main__':
    main()

logging模块上使用getattr怎么样?

import logging
str_level = 'DEBUG'
level = getattr(logging, str_level)
logger = logging.getLogger("my_logger")
logger.setLevel(level)
print(logger.getEffectiveLevel())

您还应该能够做到:

Log = logging.getLogger('myLogger')
level = logging.getLevelName('INFO')
Log.setLevel(level)

logging.getLevelName(lvl)函数可以双向工作。我使用它,它可以工作(但是您应该检查您的python实现)。

这样就省去了维护自己词典的麻烦,并减少了输入错误的可能性。

相关问题 更多 >