<p dir="ltr">Well, you just create a LogTemplate object using log_template_new(), compile an expression using log_template_compile() and then at runtime evaluate using log_template_format().</p>
<p dir="ltr">The name argument to _new() should be NULL.</p>
<p dir="ltr">The other arguments should be pretty straightforward, just grep for a call site for examples.</p>
<p dir="ltr">The assert in stats fails probably because the SCS identifier of the module is not added to the possible statistic sources. I know its not the best API there (all modules that want to report statistics has to be hardwired in the core).</p>
<div class="gmail_quote">On Feb 2, 2016 4:22 PM, &quot;Marc Falzon&quot; &lt;<a href="mailto:m@baha.mu">m@baha.mu</a>&gt; wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi<br>
<br>
Thank you, it&#39;s been very helpful: I now have a almost usable module :)<br>
<br>
I just have a last question for you: currently my module gets the log message using `log_msg_get_value(msg, LM_V_PROGRAM, NULL)` – which was enough for prototyping, however I guess it would be better to use the templating system that all other modules use... Do you mind explaining the basics of this system?<br>
<br>
One more thing: when I terminate syslog-ng running my module I get this message, do you have any idea what could cause this?<br>
<br>
**<br>
ERROR:lib/stats/stats-cluster.c:159:stats_cluster_untrack_counter: assertion failed: (self &amp;&amp; (self-&gt;live_mask &amp; (1 &lt;&lt; type)) &amp;&amp; &amp;self-&gt;counters[type] == (*counter))<br>
Aborted<br>
<br>
<br>
<br>
Cheers,<br>
<br>
m.<br>
<br>
<br>
On Tuesday 2 February 2016 at 09:22, Scheidler, Balázs wrote:<br>
<br>
&gt; Hi,<br>
&gt;<br>
&gt; Let me try to describe what is needed to parse options from the configuration file:<br>
&gt; curl-grammar.ym: is a yacc/bison source file that parses the curl specific portion of the configuration. It is able to generate parsers for LALR(1) languages.<br>
&gt; curl-parser.c: contains the set of keywords that curl understands. This maps keywords found in the configuration into tokens that the grammar is able to process. A token is basically a numeric identifier.<br>
&gt;<br>
&gt; So for instance to add a &quot;header&quot; option, you will need this stuff:<br>
&gt; 1) define a token in the grammar, so it becomes available as a macro<br>
&gt; diff --git a/modules/curl/curl-grammar.ym b/modules/curl/curl-grammar.ym<br>
&gt; index c3aaf00..eab317c 100644<br>
&gt; --- a/modules/curl/curl-grammar.ym<br>
&gt; +++ b/modules/curl/curl-grammar.ym<br>
&gt; @@ -47,6 +47,7 @@<br>
&gt; %parse-param {gpointer arg}<br>
&gt;<br>
&gt; %token KW_CURL<br>
&gt; +%token KW_HEADER<br>
&gt;<br>
&gt; %type &lt;ptr&gt; driver<br>
&gt; %type &lt;ptr&gt; curl_destination<br>
&gt;<br>
&gt; If you recompile the curl module, this will make KW_HEADER to become available in curl-grammar.h<br>
&gt; 2) add a keyword to curl-parser.c<br>
&gt; This will tell the syslog-ng lexer (a component that reads the configuration file and breaks them into tokens) to map the string &quot;header&quot; into a symbolic token named KW_HEADER.<br>
&gt; diff --git a/modules/curl/curl-parser.c b/modules/curl/curl-parser.c<br>
&gt; index 6958a8d..b60ef0b 100644<br>
&gt; --- a/modules/curl/curl-parser.c<br>
&gt; +++ b/modules/curl/curl-parser.c<br>
&gt; @@ -30,6 +30,7 @@ int curl_parse(CfgLexer *lexer, LogDriver **instance, gpointer arg);<br>
&gt;<br>
&gt; static CfgLexerKeyword curl_keywords[] = {<br>
&gt; { &quot;curl&quot;, KW_CURL },<br>
&gt; + { &quot;header&quot;, KW_HEADER },<br>
&gt; { NULL }<br>
&gt; };<br>
&gt;<br>
&gt; 3) add rules to the grammar to parse this option<br>
&gt; First we need a small refactor in the curl-grammar file to save the just instantiated CurlDestinationDriver (I hand edited this hunk for clarity, so it will not apply automatically):<br>
&gt;<br>
&gt; @@ -71,7 +72,15 @@ driver<br>
&gt; ;<br>
&gt;<br>
&gt; curl_destination<br>
&gt; - : KW_CURL &#39;(&#39; &#39;)&#39; { $$ = curl_dd_new(configuration); }<br>
&gt; + : KW_CURL<br>
&gt; + {<br>
&gt; + last_driver = curl_dd_new(configuration);<br>
&gt; + }<br>
&gt; + &#39;(&#39; &#39;)&#39; { $$ = last_driver; }<br>
&gt; + ;<br>
&gt;<br>
&gt;<br>
&gt; This basically just stores the driver instance in a variable named &quot;last_driver&quot; (defined by the core cfg-grammar.y file). So we can later use this to call setters on.<br>
&gt; And now let&#39;s add option parsing (this time the entire hunk):<br>
&gt; @@ -71,7 +72,20 @@ driver<br>
&gt; ;<br>
&gt;<br>
&gt; curl_destination<br>
&gt; - : KW_CURL &#39;(&#39; &#39;)&#39; { $$ = curl_dd_new(configuration); }<br>
&gt; + : KW_CURL<br>
&gt; + {<br>
&gt; + last_driver = curl_dd_new(configuration);<br>
&gt; + }<br>
&gt; + &#39;(&#39; curl_options &#39;)&#39; { $$ = last_driver; }<br>
&gt; + ;<br>
&gt; +<br>
&gt; +curl_options<br>
&gt; + : curl_option curl_options<br>
&gt; + |<br>
&gt; + ;<br>
&gt; +<br>
&gt; +curl_option<br>
&gt; + : KW_HEADER &#39;(&#39; string string &#39;)&#39; { curl_dd_set_header(last_driver, $3, $4); }<br>
&gt; ;<br>
&gt;<br>
&gt; /* INCLUDE_RULES */<br>
&gt;<br>
&gt; What this does is that we added a rule &quot;curl_options&quot; within the parentheses of our original &quot;curl&quot; rule, which is the rule that must match the configuration as we parse it. (think of it as a recursive tree).<br>
&gt; curl_options is satisfied with either an empty rule (e.g. no options) or recursing itself with a curl_option rule. Note the plural and singular names, curl_options is responsible to match a list of &quot;curl_option&quot;s.<br>
&gt; curl_option is responsible for parsing individual options, for now only a single rule is there, KW_HEADER, which when parsed will call curl_dd_set_header().<br>
&gt; You can add further options like this:<br>
&gt; +curl_option<br>
&gt; + : KW_HEADER &#39;(&#39; string string &#39;)&#39; { curl_dd_set_header(last_driver, $3, $4); }<br>
&gt; + | KW_URL &#39;(&#39; string &#39;)&#39; { curl_dd_set_url(last_driver, $3); }<br>
&gt;<br>
&gt;<br>
&gt; Variables like $1, $2 and so on represent the Nth token in the rule, e.g. $3 in the KW_HEADER branch is the first string value. $4, is the 2nd.<br>
&gt; Hope this helps. You will definitely be able to find tutorials that describe both yacc/lex, however there are a number of quirks how syslog-ng applies them, primarily to make it possible to extend the base grammar with plugins.<br>
&gt; Cheers,<br>
&gt; Bazsi<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Bazsi<br>
&gt;<br>
&gt; On Mon, Feb 1, 2016 at 10:01 PM, Marc Falzon &lt;<a href="mailto:m@baha.mu">m@baha.mu</a> (mailto:<a href="mailto:m@baha.mu">m@baha.mu</a>)&gt; wrote:<br>
&gt; &gt; Hi Bazsi<br>
&gt; &gt;<br>
&gt; &gt; Sorry to bother you again, but now that I&#39;m done prototyping the &quot;curl&quot; part of my module using hardcoded values for testing I&#39;m now facing the &quot;grammar/parser&quot; problem: could you please drive me though the basics of how this works? I tried to understand looking at other modules but I don&#39;t understand at all.<br>
&gt; &gt;<br>
&gt; &gt; Basically, I&#39;d like to be able to specify some configuration settings in the syslog-ng configuration, such as url, some HTTP headers... It would look like this:<br>
&gt; &gt;<br>
&gt; &gt; destination d_curl {<br>
&gt; &gt; curl(url(&quot;<a href="http://logs.example.net:5140/" rel="noreferrer" target="_blank">http://logs.example.net:5140/</a>&quot; header(&quot;Content-Type: application/json&quot;) header(&quot;X-Custom-Header: blah&quot;)));<br>
&gt; &gt; };<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; My code is still available at <a href="https://github.com/falzm/syslog-ng/tree/f/curl-module/modules/curl" rel="noreferrer" target="_blank">https://github.com/falzm/syslog-ng/tree/f/curl-module/modules/curl</a><br>
&gt; &gt;<br>
&gt; &gt; Thank you in advance,<br>
&gt; &gt;<br>
&gt; &gt; m.<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; On Saturday 30 January 2016 at 10:17, <a href="mailto:m@baha.mu">m@baha.mu</a> (mailto:<a href="mailto:m@baha.mu">m@baha.mu</a>) wrote:<br>
&gt; &gt;<br>
&gt; &gt; &gt; Hi<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Great! I should be able to get going from here, thank you for your help.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Cheers,<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; m.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; On Jan 30, 2016, at 08:56, Scheidler, Balázs &lt;<a href="mailto:balazs.scheidler@balabit.com">balazs.scheidler@balabit.com</a> (mailto:<a href="mailto:balazs.scheidler@balabit.com">balazs.scheidler@balabit.com</a>) (mailto:<a href="mailto:balazs.scheidler@balabit.com">balazs.scheidler@balabit.com</a>)&gt; wrote:<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; Hi,<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; I have added code to your module, it compiles and is able to accept messages to be sent, and prints a debug message whenever that happens.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; I didn&#39;t have too much time to clean it up, but I hope this helps to start the ball rolling.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; <a href="https://github.com/balabit/syslog-ng/compare/f/curl-module" rel="noreferrer" target="_blank">https://github.com/balabit/syslog-ng/compare/f/curl-module</a> &lt;<a href="https://github.com/balabit/syslog-ng/compare/f/curl-module" rel="noreferrer" target="_blank">https://github.com/balabit/syslog-ng/compare/f/curl-module</a>&gt;<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; Bazsi<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; --<br>
&gt; &gt; &gt; &gt; Bazsi<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; On Sat, Jan 23, 2016 at 9:27 PM, &lt;<a href="mailto:m@baha.mu">m@baha.mu</a> (mailto:<a href="mailto:m@baha.mu">m@baha.mu</a>) &lt;mailto:<a href="mailto:m@baha.mu">m@baha.mu</a>&gt;&gt; wrote:<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; On Jan 23, 2016, at 21:23, Scheidler, Balázs &lt;<a href="mailto:balazs.scheidler@balabit.com">balazs.scheidler@balabit.com</a> (mailto:<a href="mailto:balazs.scheidler@balabit.com">balazs.scheidler@balabit.com</a>) &lt;mailto:<a href="mailto:balazs.scheidler@balabit.com">balazs.scheidler@balabit.com</a>&gt;&gt; wrote:<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; If you commit your code to a branch I can help with the basic skeleton of the parser/grammar<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; Thank you Balázs, my code is available here: <a href="https://github.com/falzm/syslog-ng/tree/f/curl-module/modules/curl" rel="noreferrer" target="_blank">https://github.com/falzm/syslog-ng/tree/f/curl-module/modules/curl</a> &lt;<a href="https://github.com/falzm/syslog-ng/tree/f/curl-module/modules/curl" rel="noreferrer" target="_blank">https://github.com/falzm/syslog-ng/tree/f/curl-module/modules/curl</a>&gt;<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; m.<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; On Jan 23, 2016 5:54 PM, &quot;Marc Falzon&quot; &lt;<a href="mailto:m@baha.mu">m@baha.mu</a> (mailto:<a href="mailto:m@baha.mu">m@baha.mu</a>) &lt;mailto:<a href="mailto:m@baha.mu">m@baha.mu</a>&gt;&gt; wrote:<br>
&gt; &gt; &gt; &gt; &gt; I successfully generated a module template using the `create_plugin.sh (<a href="http://create_plugin.sh" rel="noreferrer" target="_blank">http://create_plugin.sh</a>) (<a href="http://create_plugin.sh" rel="noreferrer" target="_blank">http://create_plugin.sh</a>)` script, however I don&#39;t have the slightest idea on how to get started from here (I mean for the &#39;plugin glue&#39;, I can manage the cURL part)... The most problematic step for me is the whole parser/grammar thing, to which I believe to involve YACC/Bison parsing but I don&#39;t know how it works and it&#39;s too big of a learning curve for what I want to achieve at this point... Since the Gitbook doesn&#39;t provide any useful information on module development at the moment, is there any way to get me started on this topic? I&#39;m not a developer (sysadmin), and trying to learn from existing module doesn&#39;t quite cut it.<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; Thank you,<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; m.<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; On Friday 22 January 2016 at 11:35, Tibor Benke wrote:<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; There is also a shell script which generates a basic destination skeleton. You can find its source on this brach: <a href="https://github.com/juhaszviktor/syslog-ng/tree/f/plugin-creator" rel="noreferrer" target="_blank">https://github.com/juhaszviktor/syslog-ng/tree/f/plugin-creator</a> &lt;<a href="https://github.com/juhaszviktor/syslog-ng/tree/f/plugin-creator" rel="noreferrer" target="_blank">https://github.com/juhaszviktor/syslog-ng/tree/f/plugin-creator</a>&gt; . Check the dev-utils/plugin_skeleton_creator directory and this commit for the usage: <a href="https://github.com/juhaszviktor/syslog-ng/commit/89361d4d1817560ce8c906209355f1b737a28010" rel="noreferrer" target="_blank">https://github.com/juhaszviktor/syslog-ng/commit/89361d4d1817560ce8c906209355f1b737a28010</a> &lt;<a href="https://github.com/juhaszviktor/syslog-ng/commit/89361d4d1817560ce8c906209355f1b737a28010" rel="noreferrer" target="_blank">https://github.com/juhaszviktor/syslog-ng/commit/89361d4d1817560ce8c906209355f1b737a28010</a>&gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; 2016-01-22 11:33 GMT+01:00 Marc Falzon &lt;<a href="mailto:m@baha.mu">m@baha.mu</a> (mailto:<a href="mailto:m@baha.mu">m@baha.mu</a>) &lt;mailto:<a href="mailto:m@baha.mu">m@baha.mu</a>&gt; (mailto:<a href="mailto:m@baha.mu">m@baha.mu</a> &lt;mailto:<a href="mailto:m@baha.mu">m@baha.mu</a>&gt;)&gt;:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; Hi Bazsi,<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; On Friday 22 January 2016 at 11:28, Scheidler, Balázs wrote:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; not really, but maybe I would read the &quot;official&quot; modules source code instead. and of course you can ask questions on the mailing list. :)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; Yes that&#39;s what I&#39;ve started to do, but a proper documentation is preferable, saves time and avoid confusion ;)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; if you want to create a destination, the easiest is to create a threaded destination, where the output is an independent thread, that can use a synchronous API. Of course this is going to be slower than using an asynchronous implementation, but that usually is good enough,<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; Thank you for the hint. Given my use case (HTTP destination) I think I&#39;m safe to go with an asynchronous implementation since each request is stateless, no connections/locks involved.<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; m.<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; On Fri, Jan 22, 2016 at 11:03 AM, Marc Falzon &lt;<a href="mailto:m@baha.mu">m@baha.mu</a> (mailto:<a href="mailto:m@baha.mu">m@baha.mu</a>) &lt;mailto:<a href="mailto:m@baha.mu">m@baha.mu</a>&gt; (mailto:<a href="mailto:m@baha.mu">m@baha.mu</a> &lt;mailto:<a href="mailto:m@baha.mu">m@baha.mu</a>&gt;) (mailto:<a href="mailto:m@baha.mu">m@baha.mu</a> &lt;mailto:<a href="mailto:m@baha.mu">m@baha.mu</a>&gt;)&gt; wrote:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; Hi<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; Is there any documentation on how to develop new syslog-ng module using the native C API, besides reading the incubator modules source code?<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; Cheers,<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; m.<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; ______________________________________________________________________________<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; 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> &lt;<a href="https://lists.balabit.hu/mailman/listinfo/syslog-ng" rel="noreferrer" target="_blank">https://lists.balabit.hu/mailman/listinfo/syslog-ng</a>&gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; 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> &lt;<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>&gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; FAQ: <a href="http://www.balabit.com/wiki/syslog-ng-faq" rel="noreferrer" target="_blank">http://www.balabit.com/wiki/syslog-ng-faq</a> &lt;<a href="http://www.balabit.com/wiki/syslog-ng-faq" rel="noreferrer" target="_blank">http://www.balabit.com/wiki/syslog-ng-faq</a>&gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; ______________________________________________________________________________<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; 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> &lt;<a href="https://lists.balabit.hu/mailman/listinfo/syslog-ng" rel="noreferrer" target="_blank">https://lists.balabit.hu/mailman/listinfo/syslog-ng</a>&gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; 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> &lt;<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>&gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; FAQ: <a href="http://www.balabit.com/wiki/syslog-ng-faq" rel="noreferrer" target="_blank">http://www.balabit.com/wiki/syslog-ng-faq</a> &lt;<a href="http://www.balabit.com/wiki/syslog-ng-faq" rel="noreferrer" target="_blank">http://www.balabit.com/wiki/syslog-ng-faq</a>&gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; ______________________________________________________________________________<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; 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> &lt;<a href="https://lists.balabit.hu/mailman/listinfo/syslog-ng" rel="noreferrer" target="_blank">https://lists.balabit.hu/mailman/listinfo/syslog-ng</a>&gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; 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> &lt;<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>&gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; FAQ: <a href="http://www.balabit.com/wiki/syslog-ng-faq" rel="noreferrer" target="_blank">http://www.balabit.com/wiki/syslog-ng-faq</a> &lt;<a href="http://www.balabit.com/wiki/syslog-ng-faq" rel="noreferrer" target="_blank">http://www.balabit.com/wiki/syslog-ng-faq</a>&gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; ______________________________________________________________________________<br>
&gt; &gt; &gt; &gt; &gt; &gt; 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> &lt;<a href="https://lists.balabit.hu/mailman/listinfo/syslog-ng" rel="noreferrer" target="_blank">https://lists.balabit.hu/mailman/listinfo/syslog-ng</a>&gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; 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> &lt;<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>&gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; FAQ: <a href="http://www.balabit.com/wiki/syslog-ng-faq" rel="noreferrer" target="_blank">http://www.balabit.com/wiki/syslog-ng-faq</a> &lt;<a href="http://www.balabit.com/wiki/syslog-ng-faq" rel="noreferrer" target="_blank">http://www.balabit.com/wiki/syslog-ng-faq</a>&gt;<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; ______________________________________________________________________________<br>
&gt; &gt; &gt; &gt; &gt; 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> &lt;<a href="https://lists.balabit.hu/mailman/listinfo/syslog-ng" rel="noreferrer" target="_blank">https://lists.balabit.hu/mailman/listinfo/syslog-ng</a>&gt;<br>
&gt; &gt; &gt; &gt; &gt; 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> &lt;<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>&gt;<br>
&gt; &gt; &gt; &gt; &gt; FAQ: <a href="http://www.balabit.com/wiki/syslog-ng-faq" rel="noreferrer" target="_blank">http://www.balabit.com/wiki/syslog-ng-faq</a> &lt;<a href="http://www.balabit.com/wiki/syslog-ng-faq" rel="noreferrer" target="_blank">http://www.balabit.com/wiki/syslog-ng-faq</a>&gt;<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; ______________________________________________________________________________<br>
&gt; &gt; &gt; &gt; &gt; 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> &lt;<a href="https://lists.balabit.hu/mailman/listinfo/syslog-ng" rel="noreferrer" target="_blank">https://lists.balabit.hu/mailman/listinfo/syslog-ng</a>&gt;<br>
&gt; &gt; &gt; &gt; &gt; 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> &lt;<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>&gt;<br>
&gt; &gt; &gt; &gt; &gt; FAQ: <a href="http://www.balabit.com/wiki/syslog-ng-faq" rel="noreferrer" target="_blank">http://www.balabit.com/wiki/syslog-ng-faq</a> &lt;<a href="http://www.balabit.com/wiki/syslog-ng-faq" rel="noreferrer" target="_blank">http://www.balabit.com/wiki/syslog-ng-faq</a>&gt;<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; ______________________________________________________________________________<br>
&gt; &gt; &gt; &gt; 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> &lt;<a href="https://lists.balabit.hu/mailman/listinfo/syslog-ng" rel="noreferrer" target="_blank">https://lists.balabit.hu/mailman/listinfo/syslog-ng</a>&gt;<br>
&gt; &gt; &gt; &gt; 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> &lt;<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>&gt;<br>
&gt; &gt; &gt; &gt; FAQ: <a href="http://www.balabit.com/wiki/syslog-ng-faq" rel="noreferrer" target="_blank">http://www.balabit.com/wiki/syslog-ng-faq</a> &lt;<a href="http://www.balabit.com/wiki/syslog-ng-faq" rel="noreferrer" target="_blank">http://www.balabit.com/wiki/syslog-ng-faq</a>&gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt;<br>
&gt;<br>
<br>
<br>
<br>
</blockquote></div>