ログ フォルダー構造を動的に作成する方法はありますか? 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]#