<div dir="ltr"><div>Hi,</div><div><br></div><div>In this use-case I would recommend using the "final" flag, e.g. you do this:</div><div><br></div><div>
log { source(sys); filter(f_cyrus); destination(cyrus); flags(final); };</div><div>
log { source(sys); filter(f_mesgs); destination(mesg); };</div><div><br></div><div>And then, the mesg destination will only receive messages that:</div><div><br></div><div>1) cyrus related log statement didn't match</div><div>2) and it matches f_mesgs</div><div><br></div><div>With this structure you only have to add new log statements (in proper order though) and don't have to change the "catch-all" log statement at the end.</div><div><br></div><div>It also performs much better and the configuration is more readable.</div><div><br></div><div>Bazsi<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Mar 6, 2019 at 3:01 PM Sergey <<a href="mailto:a_s_y@sama.ru">a_s_y@sama.ru</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Wednesday 06 March 2019, you wrote:<br>
<br>
> Could you share your use case, where you wanted to "replace" log blocks?<br>
<br>
My use case is the reducing  /var/log/messages when new software installed.<br>
This can be implemented through the filter override but not so visual.<br>
<br>
For example a base config:<br>
<br>
==<br>
...<br>
filter f_mesgs          { level(info) and not facility(mail,authpriv); };<br>
destination mesg        { file("/var/log/syslog/messages"); };<br>
<br>
log { source(sys); filter(f_mesgs); destination(mesg); };<br>
...<br>
@include "/etc/syslog-ng/conf.d/*.conf"<br>
==<br>
<br>
Then I install Cyrus-IMAP for example.<br>
<br>
== conf.d/cyrus-imap.conf ==<br>
...<br>
filter f_cyrus          { match("cyrus/"); };<br>
filter f_not_cyrus      { not match("cyrus/"); };<br>
...<br>
log { source(sys); filter(f_cyrus); destination(cyrus); };<br>
==<br>
<br>
But some messages of Cyrus-IMAP is satisfy to the f_mesgs condition.<br>
I can redifine f_mesgs:<br>
<br>
filter f_mesgs          { level(info) and not facility(mail,authpriv) and not match("cyrus/"); };<br>
<br>
But the log override is more succinctly:<br>
<br>
log { source(sys); filter(f_mesgs); filter (f_not_cyrus); destination(mesg); };<br>
<br>
In this example, the "f_not_cyrus" filter is simple but they can be<br>
more complex. The "f_mesg" filter can be difficult to read in the<br>
result.<br>
<br>
-- <br>
Regards, Sergey<br>
______________________________________________________________________________<br>
Member info: <a href="https://lists.balabit.hu/mailman/listinfo/syslog-ng" rel="noreferrer" target="_blank">https://lists.balabit.hu/mailman/listinfo/syslog-ng</a><br>
Documentation: <a href="http://www.balabit.com/support/documentation/?product=syslog-ng" rel="noreferrer" target="_blank">http://www.balabit.com/support/documentation/?product=syslog-ng</a><br>
FAQ: <a href="http://www.balabit.com/wiki/syslog-ng-faq" rel="noreferrer" target="_blank">http://www.balabit.com/wiki/syslog-ng-faq</a><br>
<br>
</blockquote></div>