2017-10-20 15 views
1

syslogサーバーにログを記録し、メッセージをフォーマットするために 'logging.Formatter'を使用するメソッドを作成しました。しかし、それはFormatterが私のsyslogメッセージに追加のテキストを追加しているようで、私はそれを取り除く方法がわかりません。python logging.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 e syslogメッセージの開始。

私は次のように出力を期待している:

10/20/2017 18:48:35 app_processing LEVEL='development' FUNCTION='get_inventory_db' MESSAGE='Retrieving inventory information' 

は私が正しくフォーマッタを使用していませんか?

答えて

0

フォーマッタ&ロギングライブラリを使用してすべてを完全に修正します。

上記のプレフィックスは、Pythonのロギングライブラリとは関係ありません。 "10/20/2017 18:48:35 ………"で始まる行全体が、Pythonによってsyslogに送られています。

これに加えて、syslogの設定があります。syslogのサーバ側で調べる必要があります。それはアプリとそのロギングから制御することはできません。

これらの行を「修正」できる唯一の方法は、独自のログ形式から日付時刻を削除し、syslogの適切なプレフィックスに依存することです。

+0

これは良いことです...私は反対側からアプローチします。 – Godzilla74

関連する問題