使用宏自定义日志目标 syslog-ng

Customizing log destination syslog-ng using macros

我已经安装了 Syslog-ng 3.25,服务器正在运行,我可以毫无问题地将数据保存在 mongo 数据库中,但是我想根据某些属性自定义数据的目的地,比如源 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");
};

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

mongodb() 目的地目前不支持其 collection() 选项中的宏。如果您想在未来的版本中看到,可以在 GitHub 上提出功能请求。

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