Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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_Logging - Fatal编程技术网

带有文件旋转器的全局Python记录器

带有文件旋转器的全局Python记录器,python,logging,Python,Logging,我已使用以下方法创建了一个全局记录器: def logini(): logfile='/var/log/cs_status.log' import logging import logging.handlers global logger logger = logging.getLogger() logging.basicConfig(filename=logfile,filemode='a',format='%(asctime)s %(name)

我已使用以下方法创建了一个全局记录器:

def logini():
    logfile='/var/log/cs_status.log'
    import logging
    import logging.handlers
    global logger
    logger = logging.getLogger()
    logging.basicConfig(filename=logfile,filemode='a',format='%(asctime)s %(name)s %(levelname)s %(message)s',datefmt='%y%m%d-%H:%M:%S',level=logging.DEBUG,propagate=0)
    handler = logging.handlers.RotatingFileHandler(logfile, maxBytes=2000000, backupCount=5)
    logger.addHandler(handler)  
    __builtins__.logger = logger
它的工作,但我得到了两个输出为每个日志,一个格式和一个没有

我意识到这是由文件旋转器引起的,因为我可以注释掉处理程序代码的2行,然后得到一个输出正确的日志条目


如何防止日志旋转器输出第二个条目?

当前,您正在配置两个指向同一
日志文件的文件记录器。要仅使用
RotatingFileHandler
,请取消
basicConfig
调用:

logger = logging.getLogger()
handler = logging.handlers.RotatingFileHandler(logfile, maxBytes=2000000,
                                               backupCount=5)
formatter = logging.Formatter(fmt='%(asctime)s %(name)s %(levelname)s %(message)s',
                              datefmt='%y%m%d-%H:%M:%S')
handler.setFormatter(formatter)
handler.setLevel(logging.DEBUG)
logger.addHandler(handler)  

basicConfig
为您提供的全部功能是提供一种简单的方法来实例化
StreamHandler
(默认)或
FileHandler
,并设置其日志级别和格式(有关更多信息,请参阅)。如果您需要这两个以外的处理程序,您应该自己实例化并配置它。

Ahh,明白了,我已经尝试了您的建议,效果很好,非常感谢。