syslogが所有するログファイルのデータを自動的に更新する方法は?

syslogが所有するログファイルのデータを自動的に更新する方法は?

Goバイナリをサービスとして実行し、すべてのログを維持するためにsyslog所有のログファイルを作成しました。

これは私のサービスファイルです::

[Unit]
Description=myapp

[Service]
Type=simple
Restart=always
RestartSec=30
WorkingDirectory= /home/go/src/myapp
ExecStart=/home/go/src/myapp/myapp  

# myapp.log owned by syslog
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p /var/log/myapp
ExecStartPre=/bin/chown syslog:adm /var/log/myapp
ExecStartPre=/bin/chmod 755 /var/log/myapp
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=myapp                           

[Install]
WantedBy=multi-user.target

次に、rsyslogを使用してシステムログを管理し、/etc/rsyslog.d/myapp.confに次の内容を含むファイルを作成します。

if $programname == 'myapp' then /var/log/myapp/myapp.log
& stop

その後、サービスを再起動しました。私のためのログファイルが生成されます。ログファイルには2つの質問があります。

  1. 15日ごとにすべてのログファイルデータを更新する必要があります。これを行う方法はありますか?
  2. 一部のAPIは3分ごとに応答しますが、特定のAPIのログ生成を制限する方法はありますか?

私はこれをすべて行うためにsystemdを使用しています。 systemdサービスに添付されたログファイルを生成する方法がある場合は、ご提案ください。

ベストアンサー1

  1. ログをフラッシュするには、標準のlogrotateを使用してpostrotateスクリプトからrsyslogを再ロードできます。マニュアルページ
  2. ご覧のとおり。 Systemdはすべての標準出力をsyslogに書き込むため、stdoutに移動する必要があるAPIと移動しないでくださいAPIをフィルタリングする作業はアプリケーション内で実行する必要があります。

おすすめ記事