我创建了一个记录到我的系统日志服务器并使用' logging.Formatter'的方法。格式化消息。但是,Formatter
似乎在我的系统日志消息中添加了额外的文本,我不确定如何摆脱它。
此处的方法位于logger.py
:
import logging
import logging.handlers
import os
def sendLog(msg):
address = "192.168.1.200"
port = 514
syslogger = logging.getLogger("app_processing LEVEL='{}'".format(os.environ['ENV']))
syslogger.setLevel(logging.DEBUG)
# f = ContextFilter()
# syslogger.addFilter(f)
handler = logging.handlers.SysLogHandler(address=(address, port))
formatter = logging.Formatter("%(asctime)s %(name)s %(message)s", datefmt='%m/%d/%Y %H:%M:%S')
handler.setFormatter(formatter)
syslogger.addHandler(handler)
syslogger.debug(msg)
我从其他模块调用它:
logger.sendLog("FUNCTION='get_inventory_db' MESSAGE='Retrieving inventory information'")
然而,当它登录到服务器时,结果是:
2017-10-20 14:48:35 -04:00 192.168.1.101 192.168.1.101 user.debug 10/20/2017 18:48:35 app_processing LEVEL='development' FUNCTION='get_inventory_db' MESSAGE='Retrieving inventory information'
请注意在应该是系统日志消息的开头之前显示的2017-10-20 14:48:35 -04:00 192.168.1.101 192.168.1.101 user.debug
。
我期待输出如下:
10/20/2017 18:48:35 app_processing LEVEL='development' FUNCTION='get_inventory_db' MESSAGE='Retrieving inventory information'
我没有正确使用Formatter吗?
答案 0 :(得分:0)
您可以使用格式化程序完成所有操作。记录库。
上述前缀与python的日志库无关。以"10/20/2017 18:48:35 ………"
开头的整行由python发送到syslog。
无论添加什么,是syslog的配置,应该在syslog的服务器端进行调查。它无法通过应用程序及其日志记录进行控制。
你能做到的唯一方法"修复"这些行是通过从您自己的日志格式中删除任何日期时间,并依赖于syslog的正确前缀。