可以没有INFO:root的python日志输出

时间:2011-12-02 08:27:55

标签: python logging

我使用Python日志框架和默认设置。 对于某些数据比较原因:我必须将日志与其他数据输出进行比较。 但是python日志以默认开头,例如:

INFO:root:post params in transmitter

我可以设置不带INFO:root:的python日志输出,例如:

post params in transmitter

仅使用我自己的日志?

很多!

5 个答案:

答案 0 :(得分:22)

当然可以。您可以将格式设置为您喜欢的格式:

format: '%(message)s'

像这样:

logging.basicConfig(format='%(message)s', ...)

有关详细信息,请参阅文档:http://docs.python.org/library/logging.config.html

答案 1 :(得分:3)

endDate = '2015-07-24'
logging.basicConfig(filename="win" + strftime("%Y%m%d", localtime()) + ".txt", level=logging.DEBUG,format='%(message)s')

答案 2 :(得分:3)

那些"信息:......"或"调试:......"出现在那里因为某个处理程序定义了我的猜测:默认处理程序仍在那里。

您可以在创建后立即查看logger.handlers来查看它。

logger = logging.getLogger()
logger.handlers = [] # This is the key thing for the question!

# Start defining and assigning your handlers here
handler = logging.StreamHandler()
handler.setLevel(logging.INFO)
formatter = logging.Formatter("%(asctime)s: %(levelname)s - %(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)

此外,您可以覆盖该默认处理程序的格式:

if (len(logger.handlers) > 0): # Check here whatever. Or try/except. You get the idea...
    formatter = logging.Formatter("%(asctime)s: %(levelname)s - %(message)s")
    logger.handlers[0].setFormatter(formatter)

我不是Python专家,所以也许有更好的方法可以删除甚至不创建默认处理程序,但这对我来说效果很好。

注意:如文档中所述,.basicConfig对简单记录器非常有用。如果您有多个格式的多个流,则根据我的意识,它不起作用,您需要使用自定义处理程序。

答案 3 :(得分:2)

使用Formatter

答案 4 :(得分:0)

你真的不需要删除INFO字。 (它会真正帮助你,当你的代码更麻烦,你会使用更多的东西,而不仅仅是调试异常等信息)

如果你想将你的数据与那些数据进行比较,你可以做一些事情,比如跳过前10个字符(INFO:ROOT :)然后做你想做的事情。嗯这样的事情:

f = open("my.log","a+")
lines = f.readlines()
for line in lines:
    if(line[10:] ==  my_output):
           do_whatever_you_feel_like()