我有一个持续运行的应用程序,应用程序不会停止,当客户端没有指令时,它会空闲,如果用户在任何时候输入任何指令,就会监听外部事件并做出反应
有一个可以在应用程序运行时更改的配置文件,日志记录级别就是其中之一。myLoggingLevel是下面的参数。你知道吗
在应用程序运行时,是否仍有更改日志记录级别的方法? 我正在使用ConfigParser.RawConfigParser配置分析器()用于配置更改。你知道吗
import time
import logging
import datetime
def getLogger(loggerName='myLoggerName', logLevel='INFO', log_path='C:/logs/'):
class Formatter(logging.Formatter):
def formatTime(self, record, datefmt=None):
return (datetime.datetime.utcnow()).strftime('%H:%M:%S')
logLevel = logLevel.upper()
levels = {'DEBUG' : logging.DEBUG,
'INFO' : logging.INFO,
'WARNING' : logging.WARNING,
'ERROR' : logging.ERROR,
'CRITICAL' : logging.CRITICAL}
today = datetime.datetime.utcnow().strftime('%Y-%m-%d')
full_log_path = log_path + '%s.%s.log' % (loggerName, today)
logger = logging.getLogger(loggerName+'.'+today)
if not len(logger.handlers):
logger.setLevel(levels[logLevel])
fh = logging.FileHandler(full_log_path)
formatter = Formatter('%(asctime)s.%(msecs)03d | %(message)s', datefmt='%H:%M:%S')
fh.setFormatter(formatter)
logger.addHandler(fh)
ch = logging.StreamHandler()
ch.setLevel(logging.ERROR)
ch.setFormatter(formatter)
logger.addHandler(ch)
logger.propagate = False
logger.info('loggerName: %s' % loggerName)
return logger
def run(myLoggingLevel):
while True:
log = getLogger(loggerName='testLogLevel', logLevel=myLoggingLevel)
log.debug('I am in debug')
log.info('I am in info')
time.sleep(3)
run(myLoggingLevel='debug')
最后,我做了一个函数,在超时或事件时运行它,例如单击一个按钮来修改日志记录级别。你知道吗
为了在执行过程中更改日志记录级别,可以删除日志记录程序,并根据配置文件中的新规范创建一个新的日志记录程序。例如,您可以创建自己的监视程序来跟踪配置文件是否已更改,并根据建议相应地更新记录器级别。或者您可以通过
threading.Event
为其创建一个事件。您可能想看看threading模块。你知道吗相关问题 更多 >
编程相关推荐