JSONロギングを使用しており、UDPポート514でSysLogHandlerを使用したいと考えていました。最終的にJSONハンドラー構成が機能するようになりました。ハンドラーセクションには、次のものがあります。
{
"syslog": {
"class": "logging.handlers.SysLogHandler",
"address": ["127.0.0.1", 514],
"facility": "local6",
"formatter": "syslog_fmt"
}
これは他のどこにも見つかりませんでした。
[編集]
ここで何が起こっているかを明確にするために:これはPythonコード専用であり、Pythonの組み込みロギングモジュールを使用しています。このモジュールでは、ログメッセージの形式と宛先を構成できます。ログの形式と宛先を構成する1つの方法は、ログの構成に使用されるJSONファイルを使用することです。
上記の例では、ログメッセージをsyslogデーモンに送信できました。
このようなファイルの完全な例を以下に示します。
{
"version": 1,
"disable_existing_loggers": "False",
"formatters": {
"verbose": {
"format": "%(asctime)s:%(levelname)s:%(process)d:%(filename)s:%(funcName)s:L%(lineno)d:%(message)s"
},
"syslog": {
"format": "%(levelname)s:%(process)d:%(filename)s:%(funcName)s:L%(lineno)d:%(message)s"
}
},
"handlers": {
"console": {
"class":"logging.StreamHandler",
"formatter": "standard"
},
"syslog": {
"class": "logging.handlers.SysLogHandler",
"address": ["127.0.0.1", 514],
"facility": "local6",
"formatter": "syslog_fmt"
}
},
"loggers": {
"": {
"handlers": ["console","syslog"],
"level": "DEBUG",
"propagate": "True"
}
}
}
上記の例では、Pythonログメッセージをsyslogとコンソールの両方に送信します。宛先のメッセージの形式は異なります(syslogはすでに各メッセージの前にタイムスタンプを付けています)。syslogの宛先の場合、ログはファシリティLOCAL6を使用します。