我有这个syslog-ng 3.1.3
写入数据库的程序,一切运行良好,但它似乎只保留了 30 天的日志(最后一张表是logs20150826
)我该如何增加这个时间?我在文档中没有看到任何明确的说法。
logrotate 目录中有一些引用,但似乎没有任何内容可以控制 mysql 目标,/etc/syslog-ng/syslog-ng.conf
因此这种 30 天的保留期一定是某种默认值。
答案1
检查您是否安装了 php-syslog-ng,syslog-ng 不负责这一点。
日志轮换
日志轮换应该是使用 php-syslog-ng 的大多数安装的一部分。使用日志轮换比删除主表中的行更好,因为删除行会导致性能问题。将旧日志轮换出主表通常也会带来更好的性能,因为包含旧日志的表是静态的并且可以进行优化。脚本目录中有一个 logrotate.php 脚本。您可能需要编辑它以输入正确的 php-syslog-ng 安装路径,但之后它应该可以使用了。如果您在 config.php 文件中启用合并表,则将在脚本末尾创建所有日志表的合并表。合并表将允许您搜索所有表,而不必一次搜索一个表。合并表确实会对搜索表单的性能造成轻微影响,因为字段是基于所有表而不是某个特定表填充的。
您还可以在 config.php 中指定启用 LOGRETENTION 设置。如果启用该设置,则每次运行 logrotate.php 时,都会删除早于该设置的日志。
如果您决定使用 logrotate.php 脚本,那么只需将其添加到您的 crontab 并按照您想要的频率运行它(目前最多每天一次)。