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



此处的目的是登录到:

  1. 本地日志文件(INFO(

  2. 控制台(调试(

  3. 远程源(INFO(

然而,我的代码似乎只在同一日志级别写入控制台/文件源,所以如果我稍后在代码中调用一个函数中的sessionLog.debug("这应该是一个调试行"(和另一个函数的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)

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

最新更新