systemd を使用してログディレクトリ (/var/log/**) を自動生成する方法
公開:
更新:
systemd のサービス設定には RuntimeDirectory という、/run 以下にプログラム実行用のディレクトリを自動的に作成してくれる素晴らしい項目があります。
これの /var/log 版はないものかと思っていたところ、LogsDirectory というドンピシャなものが存在しました。私と同じことを思っていた方もいるかもしれませんし、インターネット上であまり情報が転がってなかったので、今回はこれを紹介します。
Service セクションの LogsDirectory という項目を使うことで、サービスが実行される際に自動的に /var/log 以下にログディレクトリを作成してくれます1。RuntimeDirectory が /run を含まずにディレクトリ名を指定するのと同じように、LogsDirectory も /var/log を含まないパスを指定すれば良いです2。
[Service]
LogsDirectory=your-service-name
これでシステム構築時に、先に手動でディレクトリを作るという手順を踏まなくて済みます。