#Python loggingで2回同じログが表示されてしまいます。
[実行結果]
Jul 1 00:01:02 testhost TEST3: テストメッセージ3
Jul 1 00:01:02 testhost 終了: 終了メッセージ
Jul 1 00:01:02 testhost 終了: 終了メッセージ
メッセージごとにファシリティを変更したいため、以下のコードを書きました。
もっとシンプルな方法があれば、ご教示お願いします。
※1つのファイルですべて記載したい
※コンフィグ用のファイルは作成したくない
python3
1#[test.py] 2 3# -*- coding: utf-8 -*- 4import sys 5from logging import getLogger,Formatter,DEBUG 6from logging.handlers import SysLogHandler 7 8 9# ログ設定① 10def log_init1(): 11 logger = getLogger(__name__) 12 logger.setLevel(DEBUG) 13 handler = SysLogHandler(address="/dev/log", facility=SysLogHandler.LOG_LOCAL2) 14 handler.setLevel(DEBUG) 15 handler.setFormatter(Formatter("%(message)s")) 16 logger.addHandler(handler) 17 return logger 18 19 20# ログ設定② 21def log_init2(): 22 logger = getLogger(__name__) 23 logger.setLevel(DEBUG) 24 handler = SysLogHandler(address="/dev/log", facility=SysLogHandler.LOG_LOCAL3) 25 handler.setLevel(DEBUG) 26 handler.setFormatter(Formatter("%(message)s")) 27 logger.addHandler(handler) 28 return logger 29 30# ログ設定さん 31def log_init3(): 32 logger = getLogger(__name__) 33 logger.setLevel(DEBUG) 34 handler = SysLogHandler(address="/dev/log", facility=SysLogHandler.LOG_LOCAL4) 35 handler.setLevel(DEBUG) 36 handler.setFormatter(Formatter("%(message)s")) 37 logger.addHandler(handler) 38 return logger 39 40 41def output_message(key): 42 43 key = int(key) 44 45 if key == 1: 46 logger = log_init1() 47 logger.error("TEST1: テストメッセージ1") 48 elif key == 2: 49 logger = log_init1() 50 logger.error("TEST2: テストメッセージ2") 51 else: 52 logger = log_init2() 53 logger.error("TEST3: テストメッセージ3") 54 55 logger = log_init3() 56 logger.error("終了: 終了メッセージ") 57 58 59def main(): 60 61 key = sys.argv[1] 62 output_message(key) 63 64if __name__ == "__main__": 65 main() 66 67 68#python3 test.py 3 69 70#[実行結果] 71#Jul 1 00:01:02 testhost TEST3: テストメッセージ3 72#Jul 1 00:01:02 testhost 終了: 終了メッセージ 73#Jul 1 00:01:02 testhost 終了: 終了メッセージ 74
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/07 15:32
2021/07/07 16:02
退会済みユーザー
2021/07/07 18:59
2021/07/07 23:47