【问题标题】:Are variables supported in logrotate configuration files?logrotate 配置文件中是否支持变量?
【发布时间】:2009-11-19 09:09:56
【问题描述】:

我查看了 /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
    # ...
}

这可能吗?

【问题讨论】:

    标签: logrotate


    【解决方案1】:

    你可以通过实现这个组合来实现你正在寻找的东西:

    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。

    【讨论】:

      【解决方案2】:

      您可以在安装时或运行 logrotate 之前使用 bash "here document" 即时创建合适的配置文件。

      bash 脚本可能如下所示:

      cat >rt.conf <<.
      "${my_app_log_dir}/*.log" {
          rotate 5
          size 15k
          missingok
      }
      .
      
      logrotate  rt.conf
      

      【讨论】:

        【解决方案3】:

        直接在配置文件中没有(据我对 logrotate 的了解)。

        其他解决方案:

        • 使用 include 选项从目录中包含部分配置文件。如果您有一个应用程序包,这可以为您提供帮助,该包可以在该目录中保留一个文件,其中仅包含您的应用程序的条目。

        【讨论】:

          【解决方案4】:

          使用 logrotate 3.8.7,测试表明您可以在 pre-rotate 和 post-rotate 脚本部分设置和使用变量。

          我对特定的服务日志文件进行了尝试。

             postrotate
                   pid_file="/run/some_service/some_serviced.pid"
                   test -e "${pid_file}" && kill -s HUP $(cat "${pid_file}") || true
                   touch "${pid_file}.WAS_USED"
             endscript
          

          在强制模式下运行 logrotate 以确保日志文件被旋转并执行了 post-rotate 脚本后,在 /run/some_service 中查找时,有一个附加文件“some_serviced.pid.WAS_USED”,从而证明使用变量起作用了。

          【讨论】:

            猜你喜欢
            • 2011-03-04
            • 1970-01-01
            • 1970-01-01
            • 2017-06-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-02-04
            相关资源
            最近更新 更多