Log-Ordner dynamisch erstellen

Log-Ordner dynamisch erstellen

Gibt es eine Möglichkeit, dynamisch eine Protokollordnerstruktur zu erstellen? Ich habe bei Google gesucht, aber nur eine Möglichkeit gefunden, den Protokollverzeichnispfad zu ändern. Ich möchte die Protokolldatei nach Datum sortieren. Wie apache2/2017/01/01/error.log. Ich verwende den LAMP-Stack von CentOS 7 und den LAMP-Stack von Ubuntu 16.04 LTS.

apache2/
     -2017/
         -01/
             -01/error.log
             -02/error.log

Antwort1

Um ein dynamisches Verzeichnis zu erstellen, können Sie ein Skript schreiben, das das aktuelle Datum (TT, MM, JJJJ) erkennt, und es mit dem Befehl mkdir mit dem Schalter „-p“ erstellen.

Den Apache-HTTPD-Daemon dazu aufzufordern, könnte schwierig sein. Sie sollten vielleicht ein Wrapper-Skript schreiben, das bei einem Cron-Job ausgeführt wird.

Oder sogar über logrotate auslösen.... abhängig von Datum/Uhrzeit oder Zuständen (logrotate)

So werde ich es ungefähr machen.

#!/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}

Beispielausführung auf der Befehlszeile:

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

verwandte Informationen