针对多个处理程序的 Python 日志记录不起作用

时间:2021-03-23 18:04:17

标签: python python-2.7

这里的目的是登录:

  1. 本地日志文件 (INFO)

  2. 控制台(调试)

  3. 远程来源 (INFO)

但是我的代码似乎只在同一日志级别写入控制台/文件源,所以如果我稍后在我的代码中调用 sessionLog.debug("This should be a debug line") 在一个函数和 sessionLog.info (“这应该是信息行”)在另一个中,两者都记录到控制台和文件中。我想要实现的是 sessionLog.debug() 会转到控制台行。我在这里缺少什么?我了解远程源目前无法使用。

import logging, logging.handlers

sessionLogFilename = datetime.now().strftime('LineGame_%H_%M_%d_%m_%Y.log')
logFormatFiles = ("ROBITLOG: " + '%(asctime)s - %(name)s - %(message)s')
logFormatConsole = ("ROBITLOG: " + '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
filelogformatter = logging.Formatter(logFormatFiles)
consolelogformatter = logging.Formatter(logFormatConsole)
fileLogger = logging.FileHandler(sessionLogFilename)
fileLogger.setLevel(logging.DEBUG)
fileLogger.setFormatter(filelogformatter)
consoleLogger = logging.StreamHandler(stdout)
consoleLogger.setLevel(logging.DEBUG)
consoleLogger.setFormatter(consolelogformatter)
remoteLoggerIP = "127.0.0.1"
remoteLoggerPort = 5124
remoteLogger = logging.handlers.SocketHandler(remoteLoggerPort,remoteLoggerPort)
remoteLogger.setLevel(logging.INFO)
logging.getLogger('').addHandler(fileLogger)
logging.getLogger('').addHandler(consoleLogger)
# logging.getLogger('').addHandler(remoteLogger)
sessionLog = logging.getLogger('')
sessionLog.setLevel(logging.INFO)

1 个答案:

答案 0 :(得分:0)

因此,解决方案是父记录器 (sessionLog) 需要处于或低于其他处理程序的日志记录级别。在这个 sessionLog 中需要设置为调试的日志级别。