如何根据筛选的内容创建动态目标文件名?

时间:2017-12-04 20:02:38

标签: syslog-ng

例如,如果在我的日志行中出现类似[xxx]的内容,我必须将此消息放在名称以xxx.log开头的文件中 如果消息发生变化并显示[xxy],我必须创建一个名为xxy.log的新日志文件 我怎么能在syslog-ng配置文件中这样做?

3 个答案:

答案 0 :(得分:0)

要过滤特定消息,您可以在syslog-ng中使用过滤器表达式: 您也可以在过滤器中使用正则表达式。 要在文件名中使用匹配结果,请尝试在过滤器表达式中使用命名模式:

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu,v,menuInfo);
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main_menu,menu);
}

然后您可以在目标模板中使用命名匹配:

filter f_myfilter {message("(?<name>pattern)");};

如果有效,请告诉我,我还没有时间对其进行测试。

答案 1 :(得分:0)

我找到了解决mi问题的方法。

parser p_apache {
    csv-parser(columns("MY.ALGO", "MY.MOSTRAR", "MY.OTRA")
         delimiters("|")
         );
};

destination d_file {
    file("/var/log/syslog-ng/$YEAR-$MONTH/$DAY/messages-${MY.ALGO:-nouser}.log");
};

答案 2 :(得分:0)

正则表达式是这里的答案。

例如:我的源文件名为 access2018-10-21.log ,因此我的访问日志源文件条目变为

file("/opt/liferay-portal-6.2-ee-sp13/tomcat-7.0.62/logs/access[0-9][0-9][0-9][0-9]\-[0-9][0-9]\-[0-9][0-9].log" follow_freq(1) flags(no-parse));