Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python logger.setLevel不';t返回所需的水平_Python_Logging - Fatal编程技术网

Python logger.setLevel不';t返回所需的水平

Python logger.setLevel不';t返回所需的水平,python,logging,Python,Logging,我正在尝试在我的应用程序中使用以下代码: def logger(log_file='base.log', set_level='INFO', identity='base'): set_level = get_settings().logging_setLevel if log_file: log_path = os.path.join(os.path.expanduser('~'), '/mnt/logs/') if not os.pa

我正在尝试在我的应用程序中使用以下代码:

 def logger(log_file='base.log', set_level='INFO', identity='base'):
     set_level = get_settings().logging_setLevel
     if log_file:
         log_path = os.path.join(os.path.expanduser('~'), '/mnt/logs/')
         if not os.path.exists(log_path):
             os.makedirs(log_path)
         handler = logging.FileHandler(log_path+log_file)
     else:
         handler = logging.StreamHandler()

     formatter = logging.Formatter('%(asctime)s - %(name)s - '+ identity +' - %(levelname)s - %(message)s', '%Y-%m-%dT%H:%M:%SZ')
     handler.setFormatter(formatter)
     logger = logging.getLogger(identity)
     logger.addHandler(handler)
     logger.setLevel(eval("logging." + set_level))

     return logger
但问题是,无论我在
set\u level
参数中选择哪个级别,它仍然会生成所有级别(“DEBUG”等等)


您能帮我确定问题所在吗。

请尝试以下操作,而不是使用
eval

level = logging.getLevelName(set_level)
logger.setLevel(level)

您可能应该使用
getattr
而不是
eval
日志记录中获取级别,因为
eval
可以允许某人执行几乎任何他们想要的任意代码,只需将其放入您的配置文件中即可。通过这种方式处理错误级别严重的异常也会更容易。另外,对该语句求值不会给你一个字符串,它基本上是一个noop。它会在一瞬间给它一个机会不,它没有帮助=(仍然是same@Vor好的,我已经注释掉了
set\u level=get\u settings().logging_setLevel
行,它对我很有用。为什么要在函数中重新定义
set_level
?非常感谢!我完全忘记了这一点!))你是对的。