python logging.Formatter为消息添加其他值

时间:2017-10-20 18:58:59

标签: python

我创建了一个记录到我的系统日志服务器并使用' 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吗?

1 个答案:

答案 0 :(得分:0)

您可以使用格式化程序完成所有操作。记录库。

上述前缀与python的日志库无关。以"10/20/2017 18:48:35 ………"开头的整行由python发送到syslog。

无论添加什么,是syslog的配置,应该在syslog的服务器端进行调查。它无法通过应用程序及其日志记录进行控制。

你能做到的唯一方法"修复"这些行是通过从您自己的日志格式中删除任何日期时间,并依赖于syslog的正确前缀。