Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 要在脚本中间更改日志记录级别_Python_Python 2.7 - Fatal编程技术网

Python 要在脚本中间更改日志记录级别

Python 要在脚本中间更改日志记录级别,python,python-2.7,Python,Python 2.7,我有一个持续运行的应用程序,应用程序不会停止,当客户端没有指令时,它将处于空闲状态,并侦听外部事件,如果用户在任何时候输入任何指令,它将做出反应 有一个配置文件可以在应用程序运行时更改,日志记录级别就是其中之一。myLoggingLevel是下面的参数 在应用程序运行时,是否仍需要更改日志记录级别? 我正在使用ConfigParser.RawConfigParser()进行配置更改 import time import logging import datetime def getLogger

我有一个持续运行的应用程序,应用程序不会停止,当客户端没有指令时,它将处于空闲状态,并侦听外部事件,如果用户在任何时候输入任何指令,它将做出反应

有一个配置文件可以在应用程序运行时更改,日志记录级别就是其中之一。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
为此创建一个事件。您可能想看看该模块。

最后,我做了一个函数,在超时或事件(例如,单击按钮修改日志记录级别)时运行它。

每次运行循环时,是否可以从数据库读取myLoggingLevel?可以更改数据库中的值,这将在脚本运行时更改日志记录级别