2012-08-05 57 views
4

我试图修改我的Python日志记录器的输出以显示进程ID。修改Python日志记录器的输出格式

两种方法我试过:

import logging 
FORMAT = "%(asctime)s %(process)s %(thread)s: %(message)s" 
logging.basicConfig(format=FORMAT) 
logger = logging.getLogger('my_logger') 

import logging 
FORMAT = "%(asctime)s %(process)s %(thread)s: %(message)s" 
logger = logging.getLogger('my_logger') 
handler = logger.handlers[0] 
handler.setFormatter(logging.Formatter(FORMAT)) 

纳达。第一个不会改变格式。当我尝试访问logger.handlers[0]时,第二个引发索引错误。

我不想写我自己的处理程序,只需修改默认处理程序的格式。有没有简单的方法?

回答

4

第一个改变了

logging.<severity>("message") 

格式换句话说,当您将第一个样品中的格式,你并不需要获得独立的记录器实例,你可以使用logging本身。这就是说,如果您使用的任何其他模块也使用logging,它可能会产生不必要的影响。

如果你想改变你的独立的记录器,你可以使用下面的示例中的格式:

from logging import StreamHandler, Formatter 

FORMAT = '%(asctime)-15s %(levelname)-6s %(message)s' 
DATE_FORMAT = '%b %d %H:%M:%S' 
formatter = Formatter(fmt=FORMAT, datefmt=DATE_FORMAT) 
handler = StreamHandler() 
handler.setFormatter(formatter) 
logger = logging.getLogger(__name__) 
logger.addHandler(handler) 
+0

你有什么导入得到格式化的工作?我从格式化程序导入格式化程序并得到NameError:名称'格式化程序'未定义 – Yarin 2012-08-05 20:33:09

+0

添加到上面的代码段。 – favoretti 2012-08-05 20:34:20

+0

成功! StreamHandler配方为我工作,谢谢favoretti – Yarin 2012-08-05 20:38:52