¿Existe alguna manera de crear dinámicamente una estructura de carpetas de registro? Busco en Google pero solo encuentro una manera de cambiar la ruta del directorio de registro. Lo que quiero hacer es mantener el archivo de registro por fecha. Como apache2/2017/01/01/error.log. Estoy usando la pila LAMP centos 7 y la pila LAMP ubuntu 16.04 LTS.
apache2/
-2017/
-01/
-01/error.log
-02/error.log
Respuesta1
Para crear un directorio dinámico, puede escribir un script que detecte la fecha actual (dd, mm, aaaa) y usar el comando mkdir con el modificador '-p' para crearlo.
Pedirle al demonio httpd de Apache que lo haga puede ser complicado. Es posible que desee escribir un script contenedor que se ejecute en un trabajo cron.
O incluso activarlo a través de logrotate... dependiendo de la fecha/hora o estados (logrotate)
Aproximadamente así es como lo haré.
#!/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}
Ejecución de ejemplo en 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]#