动态创建日志文件夹

动态创建日志文件夹

有没有办法动态创建日志文件夹结构?我浏览了谷歌,但我只找到了一种更改日志目录路径的方法。我想要做的是按日期保存日志文件。比如 apache2/2017/01/01/error.log。我正在使用 centos 7 LAMP 堆栈和 ubuntu 16.04 LTS LAMP 堆栈。

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

答案1

要创建动态目录,您可以编写一个检测当前日期(dd,mm,yyyy)的脚本,并使用带有“-p”开关的 mkdir 命令来创建它。

让 apache httpd 守护进程执行此操作可能比较棘手。您可能需要编写一个在 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]#

相关内容