ログフォルダを動的に作成する

ログフォルダを動的に作成する

ログ フォルダー構造を動的に作成する方法はありますか? Google で検索しましたが、ログ ディレクトリ パスを変更する方法しか見つかりません。ログ ファイルを日付別に保持したいのです。apache2/2017/01/01/error.log のように。Centos 7 LAMP スタックと ubuntu 16.04 LTS LAMP スタックを使用しています。

apache2/
     -2017/
         -01/
             -01/error.log
             -02/error.log

答え1

動的ディレクトリを作成するには、現在の日付 (dd、mm、yyyy) を検出するスクリプトを作成し、'-p' スイッチを指定した mkdir コマンドを使用して作成します。

Apache httpd デーモンにこれを実行するよう指示するのは難しいかもしれません。cron ジョブで実行されるラッパー スクリプトを作成する必要があるかもしれません。

または、日付/時刻または状態に応じて、logrotate 経由でトリガーすることもできます (logrotate)

大まかに言うと、次のように行います。

#!/bin/bash

DATE_YEAR=`date +%Y`
DATE_MONTH=`date +%m`
DATE_DAY=`date +%d`

mkdir -p /var/log/httpd/${DATE_YEAR}/${DATE_MONTH}/${DATE_DAY}

CLI での実行例:

[root@backend-0-0 hello-world]# echo $DATE_YEAR
2017
[root@backend-0-0 hello-world]# echo $DATE_MONTH
01
[root@backend-0-0 hello-world]# echo $DATE_DAY
20
[root@backend-0-0 hello-world]#
[root@backend-0-0 hello-world]#
[root@backend-0-0 hello-world]#
[root@backend-0-0 hello-world]# mkdir -p ${DATE_YEAR}/${DATE_MONTH}/${DATE_DAY}


[root@backend-0-0 hello-world]# find ${DATE_YEAR}
2017
2017/01
2017/01/20
[root@backend-0-0 hello-world]#

[root@backend-0-0 hello-world]# tree ${DATE_YEAR}
2017
└── 01
    └── 20

2 directories, 0 files
[root@backend-0-0 hello-world]#

関連情報