<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<div class="markdown-body">
<h1>3.30.1</h1>
<h2>Highlights</h2>
<ul>
<li>filter template function</li><li>support <a href="https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt" rel="nofollow">
proxy-protocol</a></li></ul>
<h2>Features</h2>
<ul>
<li>
<p><code>kafka</code> (C implementation):</p>
<ul>
<li>Added template support to <code>topic()</code>.</li><li>Added <code>fallback-topic()</code> option, which will be used, if the templated
<code>topic()</code> yields an invalid topic name.<br>
(<a href="https://github.com/syslog-ng/syslog-ng/pull/3372" data-hovercard-type="pull_request" data-hovercard-url="/syslog-ng/syslog-ng/pull/3372/hovercard">#3372</a>)</li></ul>
</li><li>
<p>transport: add proxy-protocol support</p>
<p><a href="http://www.haproxy.org/download/1.8/doc/proxy-protocol.txt" rel="nofollow">http://www.haproxy.org/download/1.8/doc/proxy-protocol.txt</a></p>
<details><summary>Example config, click to expand!</summary></details> ([<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="708939956" data-permission-text="Title is private" data-url="https://github.com/syslog-ng/syslog-ng/issues/3437" data-hovercard-type="pull_request" data-hovercard-url="/syslog-ng/syslog-ng/pull/3437/hovercard" href="https://github.com/syslog-ng/syslog-ng/pull/3437">#3437</a>](https://github.com/<a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="708939956" data-permission-text="Title is private" data-url="https://github.com/syslog-ng/syslog-ng/issues/3437" data-hovercard-type="pull_request" data-hovercard-url="/syslog-ng/syslog-ng/pull/3437/hovercard" href="https://github.com/syslog-ng/syslog-ng/pull/3437">/pull/3437</a>))
</li><li>
<p><code>filter</code>: new template function</p>
<p>The new introduced <code>filter</code> template function will allow filtering lists based on a filter expression.</p>
<p>For example this snippet removes odd numbers</p>
<pre><code>log {
  source { example-msg-generator(num(1) values(INPUT => "0,1,2,3")); };
  destination {
     file("/dev/stdout"
           template("$(filter ('$(% $_ 2)' eq '0') $INPUT)\n)")
     );
  };
};
</code></pre>
<p>(<a href="https://github.com/syslog-ng/syslog-ng/pull/3426" data-hovercard-type="pull_request" data-hovercard-url="/syslog-ng/syslog-ng/pull/3426/hovercard">#3426</a>)</p>
</li><li>
<p>file, network, program destinations: : new truncate_size option introduced to truncate an output message to a specified max size. default value is -1 (disabled).</p>
<pre><code>network("127.0.0.1" truncate_size(100));
</code></pre>
<p>new stats counters:</p>
<pre><code>dst.network;d_local#0;udp,127.0.0.1:1111;a;truncated_count;1
dst.network;d_local#0;udp,127.0.0.1:1111;a;truncated_bytes;1
</code></pre>
<p>(<a href="https://github.com/syslog-ng/syslog-ng/pull/3474" data-hovercard-type="pull_request" data-hovercard-url="/syslog-ng/syslog-ng/pull/3474/hovercard">#3474</a>)</p>
</li><li>
<p>network: add FreeBSD support for the <code>so_reuseport(yes)</code> the same as in linux
<code>SO_REUSEPORT</code> (FreeBSD uses <code>SO_REUSEPORT_LB</code> flag).<br>
(<a href="https://github.com/syslog-ng/syslog-ng/pull/3438" data-hovercard-type="pull_request" data-hovercard-url="/syslog-ng/syslog-ng/pull/3438/hovercard">#3438</a>)</p>
</li><li>
<p>date-parser: %z accepts local timezone std format as well<br>
(<a href="https://github.com/syslog-ng/syslog-ng/pull/3453" data-hovercard-type="pull_request" data-hovercard-url="/syslog-ng/syslog-ng/pull/3453/hovercard">#3453</a>)</p>
</li><li>
<p><code>syslog-format</code>: accepting longer sdata keys</p>
<p>Triggered by <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="587946569" data-permission-text="Title is private" data-url="https://github.com/syslog-ng/syslog-ng/issues/3197" data-hovercard-type="issue" data-hovercard-url="/syslog-ng/syslog-ng/issues/3197/hovercard" href="https://github.com/syslog-ng/syslog-ng/issues/3197">
#3197</a><br>
At the end of the discussion in the mentioned issue, we decided<br>
to change the parser and accept longer than 32 character ID's.<br>
(<a href="https://github.com/syslog-ng/syslog-ng/pull/3244" data-hovercard-type="pull_request" data-hovercard-url="/syslog-ng/syslog-ng/pull/3244/hovercard">#3244</a>)</p>
</li><li>
<p>systemd-journal: add namespace() option<br>
This option accepts a string which is identical to the <code>--namespace</code> option of journalctl.<br>
For systems defining this option with a <code>systemd</code> version older than <code>
v245</code> a warning is issued.<br>
(<a href="https://github.com/syslog-ng/syslog-ng/pull/3358" data-hovercard-type="pull_request" data-hovercard-url="/syslog-ng/syslog-ng/pull/3358/hovercard">#3358</a>)</p>
</li></ul>
<h2>Bugfixes</h2>
<ul>
<li>
<p>date-parse: %Z should parse the same timezones as %z not just local and gmt<br>
(<a href="https://github.com/syslog-ng/syslog-ng/pull/3453" data-hovercard-type="pull_request" data-hovercard-url="/syslog-ng/syslog-ng/pull/3453/hovercard">#3453</a>)</p>
</li><li>
<p>python: printing the exception instead of None (if compiled with clang)<br>
(<a href="https://github.com/syslog-ng/syslog-ng/pull/3405" data-hovercard-type="pull_request" data-hovercard-url="/syslog-ng/syslog-ng/pull/3405/hovercard">#3405</a>)</p>
</li><li>
<p>network/udp: message was lost (not sent) if it was too large, and a time reopen amount of time needed to expire to send the next message lowering the thoughtput. now it is truncated at 65507.<br>
(<a href="https://github.com/syslog-ng/syslog-ng/pull/3474" data-hovercard-type="pull_request" data-hovercard-url="/syslog-ng/syslog-ng/pull/3474/hovercard">#3474</a>)</p>
</li><li>
<p>tlscontext: support IPv6 X509v3 Subject Alternative Name</p>
<p>Fixes <a class="issue-link js-issue-link" data-error-text="Failed to load title" data-id="729697991" data-permission-text="Title is private" data-url="https://github.com/syslog-ng/syslog-ng/issues/3465" data-hovercard-type="issue" data-hovercard-url="/syslog-ng/syslog-ng/issues/3465/hovercard" href="https://github.com/syslog-ng/syslog-ng/issues/3465">
#3465</a><br>
(<a href="https://github.com/syslog-ng/syslog-ng/pull/3466" data-hovercard-type="pull_request" data-hovercard-url="/syslog-ng/syslog-ng/pull/3466/hovercard">#3466</a>)</p>
</li><li>
<p><code>map</code>: pass <code>$_</code> to <code>if</code> correctly.</p>
<p>Prior this patchset, <code>if</code> did not receive <code>$_</code> correctly.</p>
<p>After this change, these configurations will work:</p>
<pre><code>log {
  source { example-msg-generator(num(1) values(INPUT => "0,1,2,3")); };
  destination {
     file("/dev/stdout"
           template("$(map $(if ('$(% $_ 2)' eq '0') 'even' 'odd') $INPUT)'\n)")
     );
  };
};
</code></pre>
<p>(<a href="https://github.com/syslog-ng/syslog-ng/pull/3426" data-hovercard-type="pull_request" data-hovercard-url="/syslog-ng/syslog-ng/pull/3426/hovercard">#3426</a>)</p>
</li><li>
<p>systemd-journal: add namespace to the persist name<br>
(<a href="https://github.com/syslog-ng/syslog-ng/pull/3407" data-hovercard-type="pull_request" data-hovercard-url="/syslog-ng/syslog-ng/pull/3407/hovercard">#3407</a>)</p>
</li><li>
<p><code>syslog-ng</code>: fixed numerous spelling mistakes in messages generated by syslog-ng<br>
(<a href="https://github.com/syslog-ng/syslog-ng/pull/3398" data-hovercard-type="pull_request" data-hovercard-url="/syslog-ng/syslog-ng/pull/3398/hovercard">#3398</a>)</p>
</li><li>
<p>network: fix TLS certificate hostname verification when using <code>failover()</code> servers</p>
<p>For TLS certificate hostname verification, the certificate's hostname needs to be compared to the configured hostname<br>
of the primary and each failover server. syslog-ng used always the primary server's name incorrectly.<br>
(<a href="https://github.com/syslog-ng/syslog-ng/pull/3447" data-hovercard-type="pull_request" data-hovercard-url="/syslog-ng/syslog-ng/pull/3447/hovercard">#3447</a>)</p>
</li><li>
<p>afsocket: syslog-ng fails to bind() after config revert</p>
<p>When having a program source or destination and a network destination in the<br>
config, if we reload with an invalid config, syslog-ng crashes, as it cannot init<br>
the old network source, because its address is in use.<br>
(<a href="https://github.com/syslog-ng/syslog-ng/pull/3416" data-hovercard-type="pull_request" data-hovercard-url="/syslog-ng/syslog-ng/pull/3416/hovercard">#3416</a>)</p>
</li><li>
<p>syslog-ng-ctl: when syslog-ng gets stuck on executing a heavy stats-ctl command, should be<br>
able to do a graceful shutdown when it is requested.<br>
(<a href="https://github.com/syslog-ng/syslog-ng/pull/3349" data-hovercard-type="pull_request" data-hovercard-url="/syslog-ng/syslog-ng/pull/3349/hovercard">#3349</a>)</p>
</li><li>
<p>json-parser: fix parsing 64 bit numbers (currently 32 bit was a limit)<br>
(<a href="https://github.com/syslog-ng/syslog-ng/pull/3403" data-hovercard-type="pull_request" data-hovercard-url="/syslog-ng/syslog-ng/pull/3403/hovercard">#3403</a>)</p>
</li><li>
<p>usertty(): on each tty open error an error mesage and a 10 minutes long disabling of the usertty() destination has been added.<br>
Until now, the usertty() destination were only disabled for blocking write() calls.<br>
(<a href="https://github.com/syslog-ng/syslog-ng/pull/3473" data-hovercard-type="pull_request" data-hovercard-url="/syslog-ng/syslog-ng/pull/3473/hovercard">#3473</a>)</p>
</li></ul>
<h2>Notes to developers</h2>
<ul>
<li>
<p>Proxy protocol support added to loggen.</p>
<p>Four new options added to loggen to suppport the proxy protocol:</p>
<ul>
<li>--proxied : Generate PROXY protocol v1 header</li><li>--proxy-src-ip : Set the source IP for the PROXY protocol v1 header. If not specified a random IP address generated (192.168.1.X).</li><li>--proxy-dst-ip : Set the destination IP for the PROXY protocol v1 header. If not specified a random IP address generated (192.168.1.X).</li><li>--proxy-src-port : Set the source port for the PROXY protocol v1 header. If not specified a random port generated in the range 5000-10000.</li><li>--proxy-dst-port : Set the destination port for the PROXY protocol v1 header. If not specified the port number 514 will be used.<br>
(<a href="https://github.com/syslog-ng/syslog-ng/pull/3462" data-hovercard-type="pull_request" data-hovercard-url="/syslog-ng/syslog-ng/pull/3462/hovercard">#3462</a>)</li></ul>
</li><li>
<p><code>bison</code>: Minimum required version is now 3.4.2.<br>
You still only need <code>bison</code>, if you are building from git source or changing the grammar in the released source tarball.<br>
(<a href="https://github.com/syslog-ng/syslog-ng/pull/2526" data-hovercard-type="pull_request" data-hovercard-url="/syslog-ng/syslog-ng/pull/2526/hovercard">#2526</a>)</p>
</li><li>
<p>Template evaluation related function signatures changed.</p>
<p>A new structure <code>LogTemplateEvalOptions</code> is introduced to group parameters together.<br>
(<a href="https://github.com/syslog-ng/syslog-ng/pull/3426" data-hovercard-type="pull_request" data-hovercard-url="/syslog-ng/syslog-ng/pull/3426/hovercard">#3426</a>)</p>
</li></ul>
<h2>Other changes</h2>
<ul>
<li>json-parser: change every per message logs that was higher than debug to debug<br>
(<a href="https://github.com/syslog-ng/syslog-ng/pull/3401" data-hovercard-type="pull_request" data-hovercard-url="/syslog-ng/syslog-ng/pull/3401/hovercard">#3401</a>)</li></ul>
<h2>Credits</h2>
<p>syslog-ng is developed as a community project, and as such it relies<br>
on volunteers, to do the work necessarily to produce syslog-ng.</p>
<p>Reporting bugs, testing changes, writing code or simply providing<br>
feedback are all important contributions, so please if you are a user<br>
of syslog-ng, contribute.</p>
<p>We would like to thank the following people for their contribution:</p>
<p>Andras Mitzki, Antal Nemes, Attila Szakacs, Balazs Scheidler,<br>
Boris Korzun, Gabor Nagy, Laszlo Budai, Laszlo Szemere, László Várady,<br>
Norbert Takacs, Peter Kokai, Viktor Juhasz, Vivin Peris, Zoltan Pallagi,<br>
bjoe2k4</p>
</div>
<br>
</div>
<br>
<div id="Signature">
<div><span></span></div>
</div>
</body>
</html>