首页 > 解决方案 > 使用宏自定义日志目标 syslog-ng

问题描述

我已经安装了 Syslog-ng 3.25,服务器正在工作,我可以毫无问题地将数据保存在 mongo db 中,但我想根据某些属性(如源 IP 和日期)自定义数据的目的地,所以对于每一天服务器会将日志保存在新位置。我像这样定义
目的地 d_pppoedb {

 mongodb(
        uri("mongodb://localhost:27017/syslog")
        collection("${HOST}${YEAR}${MONTH}${DAY}")
 persist-name(d_pppoedb)
    
    );

};

但似乎宏不起作用,因为在我的 MongoDB 中没有创建新集合,然后我尝试使用此方法将日志保存到文件

destination d_file {
        file("/var/log/${YEAR}.${MONTH}.${DAY}/${HOST}.log");
};

但同样,没有创建新文件,为什么宏不起作用。当我将目标设置为静态值时,它可以正常工作并保存日志,但它不想使用宏

标签: mongodbubuntusyslog-ng

解决方案


mongodb()目标当前不支持其collection()选项中的宏。如果你想在未来的版本中看到它,你可以在GitHub 上打开一个功能请求。

但是,您的第二个示例应该按预期工作。如果${YEAR}.${MONTH}.${DAY}目录不存在,您也应该添加该create-dirs(yes)选项。


推荐阅读