ログファイルに出力するシステムサービスがあります
StandardOutput=file:/path/to/log/file
StandardError=file:/path/to/error/file
これらの出力とエラーの前にデータ+時間を追加して読み取ることができる方法は何ですか?
10-09-2019 12:43:23 The output here.
ベストアンサー1
StandartOutput
私はsystemdを使ってこれを行う方法が見つかりませんでしたが、StandardError
systemdで実行されているpython3スクリプトの解決策を見つけました。 Journaldはデフォルトで出力をsyslogに送信するため、rsyslog(またはシステム上のすべてのsyslogユーティリティ)を使用して必要なものを取得できます(出力はJournaldに送信されるかのようにジャーナルでも複製されますが、関連するものと同じように)syslogは次のようになります。 。有効になります(ほとんどの最新ディストリビューションのデフォルト設定)。
これは私の/etc/rsyslog.d/python3_custom.conf
設定ファイルです。
template(name="python3_custom_file" type="string" string="/var/log/python3/%programname:16:$%/out.log")
template(name="python3_custom_output" type="list") {
property(name="timereported" dateFormat="rfc3339")
constant(value=" ")
property(name="syslogseverity-text" caseConversion="upper")
property(name="msg" spifno1stsp="on")
property(name="msg" droplastlf="on")
constant(value="\n")
}
if($programname startswith 'python3_custom_') then {
action(type="omfile" dynaFile="python3_custom_file" template="python3_custom_output")
stop
}
それからあなたはsystemctl restart rsyslog
。最後に、どのsyslogを使用するかをsystemdサービスに通知する必要があります。programname
ファイルにこのディレクティブを追加するだけです。これにより、ディレクティブの最後に出力するために変更する必要がある複数のサービスを持つことができます(必要に応じて簡単に変更できます)。SyslogIdentifier=python3_custom_programname
.service
programname
/var/log/python3/programname/out.log