我正在使用python logger.以下是我的代码:
import os
import time
import datetime
import logging
class Logger :
def myLogger(self):
logger = logging.getLogger('ProvisioningPython')
logger.setLevel(logging.DEBUG)
now = datetime.datetime.now()
handler=logging.FileHandler('/root/credentials/Logs/ProvisioningPython'+ now.strftime("%Y-%m-%d") +'.log')
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
return logger
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我在每个logger.info调用的日志文件中都有多个条目.我怎么解决这个问题?
我正在使用Python日志记录,出于某种原因,我的所有消息都出现了两次.
我有一个配置日志记录的模块:
# BUG: It's outputting logging messages twice - not sure why - it's not the propagate setting.
def configure_logging(self, logging_file):
self.logger = logging.getLogger("my_logger")
self.logger.setLevel(logging.DEBUG)
self.logger.propagate = 0
# Format for our loglines
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
# Setup console logging
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
ch.setFormatter(formatter)
self.logger.addHandler(ch)
# Setup file logging as well
fh = logging.FileHandler(LOG_FILENAME)
fh.setLevel(logging.DEBUG)
fh.setFormatter(formatter)
self.logger.addHandler(fh)
Run Code Online (Sandbox Code Playgroud)
稍后,我调用此方法来配置日志记录:
if __name__ == '__main__':
tom = Boy()
tom.configure_logging(LOG_FILENAME)
tom.buy_ham()
Run Code Online (Sandbox Code Playgroud)
然后说,buy_ham模块,我打电话给:
self.logger.info('Successfully able to write …Run Code Online (Sandbox Code Playgroud) 所以我正在玩他们昨天发布的Google的Tensorflow库,遇到了一个令我讨厌的烦人的bug.
我所做的是像往常一样设置python日志记录功能,结果是,如果我导入tensorflow库,控制台中的所有消息都开始加倍.有趣的是,如果您只使用该功能,则不会发生这种情况logging.warn/info/..().
不会使消息加倍的代码示例:
import tensorflow as tf
import logging
logging.warn('test')
Run Code Online (Sandbox Code Playgroud)
的一个代码示例做双所有消息:
import tensorflow as tf
import logging
logger = logging.getLogger('TEST')
ch = logging.StreamHandler()
logger.addHandler(ch)
logger.warn('test')
Run Code Online (Sandbox Code Playgroud)
现在,我是个简单的人.我喜欢它的功能logging,所以我使用它.使用logger对象和添加a的设置StreamHandler是我看到的其他人如何做到这一点的东西,但看起来它符合这个东西的意图.但是,我没有对日志库的深入了解,因为它总是有点工作.
因此,解释为什么消息加倍的任何帮助都将是最有帮助的.
我使用Ubuntu 14.04.3 LTS与Python 2.7.6,但错误发生在我尝试的所有Python 2.7版本中.