追加読書

追加読書

私が定義した形式でsyslogサーバーに入れるために設定ファイルを定義するデーモンsystemdにログインするサービスとして管理される単純なPythonフラグメントがあります。rsysogdこれまではうまくいきます。

次のコードは、サーバーにログインしたい文字列にパラメータを渡します。私は以下のコードをモジュールとして使用してロギングに単独で使用していますが、実際のスクリプトではこれをロギングに使用します。

#!/usr/bin/env python

import syslog
import sys

syslog.openlog(facility=syslog.LOG_LOCAL0)
syslog.syslog(syslog.LOG_INFO, sys.argv[1])

アプリケーションはこのアプリケーションsystemdによって管理されているため、表示時に利用可能なsyslogのコピーを作成し、syslogに他の重要な情報を記録するので、そうしないことを願っていjournalctl -xeますjournalctl -u <my-service>

サービス定義は

[Unit]
Description=Computes device foobar availability status

[Service]
Type=simple

EnvironmentFile=/etc/sysconfig/db_EndPoint
ExecStart=/usr/bin/python /opt/foobar/foobar.py
WatchdogSec=60
RestartSec=10
Restart=always
LimitNOFILE=4096

[Install]
WantedBy=default.target

そして/etc/systemd/journald.conf私がアクティブにしていないファイルからどの利用可能なオプション。これを探しました。ログ構成ファイルドキュメントを使用しForwardToSyslog=nojournaldサービスを再起動してください

systemctl restart systemd-journald

サービスデバイスも再起動しましたが、syslog サーバーのログ出力が表示されます。そしてまた、ログを記録します。ここでどのオプションがありませんか?

ベストアンサー1

rsys[l]ogdデーモン[...]に書き込むシステムサービスで管理される単純なPythonフラグメントがあります。

いいえ、まだしていません。

あなたが持っているのは、システムログに記録するサービスです。 Pythonプログラムが通信しているよく知られているソケットを受信する/dev/logサーバーではありませんrsyslogd。これはsystemd-journaldrsyslogdはい反対側に付いているsystemd-journaldそしてPythonプログラムはそれと会話しません。

これで見ると、なしで何かを送るsystemd-journald唯一の方法は明らかです。その他にルーティングrsyslogdいいえデフォルトでは、Pythonライブラリで使用されるよく知られたソケットです。それはすべてあなたがそれを構成する方法によって異なりますrsyslogd

  • 次のコマンドを使用してUDPサーバーモジュールの電源を入れることができますimudp。この場合、そのUDPサーバーと通信する別のPythonライブラリを使用して、Pythonプログラムにこのモジュールを使用するように指示できます。 (Python syslogライブラリはよく知られているローカルソケットを使用するように組み込まれています。)
  • または(より良いことは、UDPサービスをコンピュータの外部に公開しないように注意する必要があることを考慮して)、モジュール構成でそれを設定して、待機する2番目の不明rsyslogdなソケットを提供できることです。繰り返しますが、Pythonプログラムにそれを使用し、他のPythonライブラリを使用するように指示する必要があります。AF_LOCALimuxsock

Pythonプログラムで実行する作業は、この回答の範囲外です。

追加読書

おすすめ記事