Есть ли способ динамически создавать структуру папок журнала? Я просматриваю 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
Чтобы создать динамический каталог, вы можете написать скрипт, который определяет текущую дату (дд, мм, гггг), и использовать команду mkdir с ключом '-p' для его создания.
Попросить apache httpd daemon сделать это может быть сложно. Вы можете написать скрипт-обертку, который будет выполняться в задании 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]#