Python 针对多个处理程序的日志记录不起作用
Python Logging Against Multiple Handlers Not Working
这里的目的是登录到:
本地日志文件(信息)
控制台(调试)
远程源(信息)
但是我的代码似乎只在相同的日志级别写入两个 console/file 源,所以如果我稍后在我的代码中调用 sessionLog.debug("This should be a debug line")一个函数和另一个函数中的 sessionLog.info("This should be an info line"),两者都记录到控制台和文件中。我想要实现的是 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) 需要处于或低于其他处理程序的记录级别。在此会话中,需要将日志记录级别设置为调试。
这里的目的是登录到:
本地日志文件(信息)
控制台(调试)
远程源(信息)
但是我的代码似乎只在相同的日志级别写入两个 console/file 源,所以如果我稍后在我的代码中调用 sessionLog.debug("This should be a debug line")一个函数和另一个函数中的 sessionLog.info("This should be an info line"),两者都记录到控制台和文件中。我想要实现的是 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) 需要处于或低于其他处理程序的记录级别。在此会话中,需要将日志记录级别设置为调试。