日志配置见:

[loggers]
keys=root,idaparser

[handlers]
keys=consoleHandler,fileHandler

[formatters]
keys=simpleFormatter

[formatter_simpleFormatter]
format=[%(asctime)s] - (%(levelname)s) : %(message)s

[logger_root]
level=DEBUG
handlers=consoleHandler

[logger_idaparser]
level=DEBUG
handlers=consoleHandler,fileHandler
qualname=idaparser

[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)

[handler_fileHandler]
class=FileHandler
level=INFO
formatter=simpleFormatter
args=('idaparser.log', )

测试代码如下:

# test.py

import logging
import logging.config

logging.config.fileConfig("logging_parser.conf")

#create logger
logger = logging.getLogger("idaparser")

#"application" code
logger.debug("debug message")
logger.info("info message")

logHello = logging.getLogger("hello")
logHello.info("Hello world!")


logchild = logging.getLogger("idaparser.child")
logchild.info("Hello Child!")

其输出为:

[2011-09-08 11:26:16,842] - (DEBUG) : debug message   
[2011-09-08 11:26:16,842] - (DEBUG) : debug message
[2011-09-08 11:26:16,842] - (INFO) : info message
[2011-09-08 11:26:16,842] - (INFO) : info message
[2011-09-08 11:26:16,842] - (INFO) : Hello world!
[2011-09-08 11:26:16,842] - (INFO) : Hello Child!
[2011-09-08 11:26:16,842] - (INFO) : Hello Child!

其中发现每条log输出不等。研究了一下log源码,得到解释如下:

[2011-09-08 11:26:16,842] - (DEBUG) : debug message      ---- logger输出
[2011-09-08 11:26:16,842] - (DEBUG) : debug message      ---- root输出
[2011-09-08 11:26:16,842] - (INFO) : info message           ---- logger输出
[2011-09-08 11:26:16,842] - (INFO) : info message           ---- root输出
[2011-09-08 11:26:16,842] - (INFO) : Hello world!             ---- root输出
[2011-09-08 11:26:16,842] - (INFO) : Hello Child!              ---- logger输出
[2011-09-08 11:26:16,842] - (INFO) : Hello Child!              ---- root输出

其中,每个logger实例输出先通过自身的handlers处理,然后还会交到其父层handlers处理。故出现重复输出情况。 logworld实例默认安全级别为warn,故只有其父层root输出信息。

相关文章:

  • 2021-11-11
  • 2021-07-17
  • 2021-07-08
  • 2021-11-11
  • 2021-07-02
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-11-08
  • 2021-08-10
  • 2021-12-27
  • 2021-12-24
  • 2022-01-10
  • 2021-05-26
  • 2021-10-04
相关资源
相似解决方案