Existe uma maneira de criar dinamicamente uma estrutura de pastas de log? Eu navego no Google, mas só encontro uma maneira de alterar o caminho do diretório de log. O que eu quero fazer é manter o arquivo de log por data. Como apache2/2017/01/01/error.log. Estou usando a pilha LAMP do centos 7 e a pilha LAMP do Ubuntu 16.04 LTS.
apache2/
-2017/
-01/
-01/error.log
-02/error.log
Responder1
Para criar um diretório dinâmico, você pode escrever um script que detecte a data atual (dd, mm, aaaa) e usar o comando mkdir com a opção '-p' para criá-lo.
Pedir ao daemon httpd do Apache para fazer isso pode ser complicado. Você pode querer escrever um script wrapper que seja executado em um cron job.
Ou até mesmo acioná-lo via logrotate.... dependendo da data/hora ou estados (logrotate)
Aproximadamente aqui está como farei isso.
#!/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}
Exemplo de execução no 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]#