Criar pasta de log dinamicamente

Criar pasta de log dinamicamente

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]#

informação relacionada