我在/etc/logrotate.d目录中查看了logrotate.conf示例和所有内容。我无处可找到这些文件中变量的文档。
我正在尝试创建一个配置文件,用于旋转我们正在编写的应用程序的日志。我想设置一次存储日志的目录,然后将其用作变量,如下所示:
my_app_log_dir=/where/it/is/deployed/logs
${my_app_log_dir}/*.log ${my_app_log_dir}/some_sub_dir/*.log {
missingok
# and so on
# ...
}
这可能吗?
答案 0 :(得分:7)
您可以通过实施此方法来实现您的目标:
my-logrotate.conf(注意:双引号"
是强制性的,同时请注意文件名不必出现在同一行上)
"*.log"
"some_sub_dir/*.log"
{
missingok
# and so on
# ...
}
然后是实际的logrotate脚本 - my-logrotate.sh
#!/bin/sh
set -eu
cd "${my_app_log_dir}"
exec logrotate /path/to/my-logrotate.conf
现在您可以将logrotate.sh添加到您的crontab。
答案 1 :(得分:2)
您可以使用bash" here document"在安装时或运行logrotate之前动态创建合适的配置文件。
bash脚本可能如下所示:
cat >rt.conf <<.
"${my_app_log_dir}/*.log" {
rotate 5
size 15k
missingok
}
.
logrotate rt.conf
答案 2 :(得分:1)
直接在配置文件中没有(据我所知,在logrotate中)。
其他解决方案:
答案 3 :(得分:0)
使用logrotate 3.8.7,测试显示您可以在旋转前和旋转后脚本部分中设置和使用变量。
我尝试过使用特定的服务日志文件。
CityText "10"
在强制模式下运行logrotate以确保日志文件已旋转并执行了post-rotate脚本后,在/ run / some_service中查找时,还有一个附加文件“ some_serviced.pid.WAS_USED”,从而证明了使用起作用的变量。