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
Python日志问题与简单示例_Python_Logging - Fatal编程技术网

Python日志问题与简单示例

Python日志问题与简单示例,python,logging,Python,Logging,我尝试了一个基于官方日志记录食谱的简单示例,但结果出乎意料: LOG_PATH = 'logs' logger = logging.getLogger(__name__) # Creates 2 Handlers to split log levels info_fh = logging.FileHandler(path.join(LOG_PATH, 'info_level.log')) info_fh.setLevel(logging.INFO) err_fh = logging.File

我尝试了一个基于官方日志记录食谱的简单示例,但结果出乎意料:

LOG_PATH = 'logs'

logger = logging.getLogger(__name__)

# Creates 2 Handlers to split log levels
info_fh = logging.FileHandler(path.join(LOG_PATH, 'info_level.log'))
info_fh.setLevel(logging.INFO)
err_fh = logging.FileHandler(path.join(LOG_PATH, 'err_level.log'))
err_fh.setLevel(logging.ERROR)

# Create formatter and add it to the handlers
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
info_fh.setFormatter(formatter)
err_fh.setFormatter(formatter)

# add the handlers to logger
logger.addHandler(info_fh)
logger.addHandler(err_fh)
然后我在控制台中写下:

In [2]: logger.info("hello")
In [3]: logger.error("bad")
后来:

cat logs/err_level.log
>>> 2017-02-27 13:16:40,328 - jive - ERROR - bad

cat logs/info_level.log
>>> 2017-02-27 13:16:40,328 - jive - ERROR - bad

我不明白为什么info_level.log文件不包含“hello”日志记录。

这可能意味着您的
记录器的自身级别高于
logging.info
(20)。此值继承自父记录器:

>>> logger.level  
0  # that means it is not set
>>> logging.NOTSET
0
>>> logger.getEffectiveLevel()
30  # value of parent because not set
>>> logger.parent.level       
30
>>> logging.INFO
20  # < logger.getEffectiveLevel()  -> not picked up
现在将拾取
info
日志。从
记录器。getEffectiveLevel

指示此记录器的有效级别。如果使用setLevel()设置了NOTSET以外的值,则返回该值。否则,将向根遍历层次结构,直到找到NOTSET以外的值,并返回该值

其他地方:

请注意,创建根记录器时带有级别警告


谢谢你的完美解释。
>>> logger.setLevel(logging.DEBUG)
>>> logger.getEffectiveLevel()
10