使用宏自定义日志目标 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)
选项。
我已经安装了 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)
选项。