<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="generator" content="Osso Notes">
    <title></title></head>
<body>
<p>
<br>Hi,
<br>
<br>one of the previous syslog-ng versions introduced \ as an escape character. this was a bad idea, because:
<br>
<br>* it broke your config
<br>* it plays badly with windows filenames (which tend to contain \ frequently)
<br>
<br>I was thinking about reverting that change, however it'll either break your config or break for those who have already adapted to the new format.
<br>
<br>I'm thinking about doing it anyway, with big fat warnings if backslashes are used in templates. but it'll not help clarity.
<br>
<br>anyway, your issue can be solved by doubling the amount of backslashes you needed before.
<br>
<br>----- Original message -----
<br>&gt; Hello all. We are using syslog-ng to transmit messages to a stream and 
<br>&gt; an application then reads the messages from the stream and parses them. 
<br>&gt; We have been using 2.0.9 normally. But when we updated to 3.3.4 the 
<br>&gt; message format coming to the stream has changed.
<br>&gt; 
<br>&gt; Btw we are using CentOS 5 with kernerl version 3.5.3
<br>&gt; 
<br>&gt; In 2.0.9 we had the following config:
<br>&gt; 
<br>&gt; -----------
<br>&gt; 
<br>&gt; destination webfilter {
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;unix-stream("/var/log/streams/webfilter"
<br>&gt; template("$YEAR-$MONTH-$DAY\\011$HOUR:$MIN:$SEC\\011$HOST\\011$MSG\n")
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;template-escape(yes)
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;);
<br>&gt; };
<br>&gt; 
<br>&gt; filter f_webfilter {
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;match("dansguardian\\[.*\\]: .*\t");
<br>&gt; };
<br>&gt; 
<br>&gt; log {
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;source(s_all);
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;filter(f_webfilter);
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;destination(webfilter);
<br>&gt; };
<br>&gt; 
<br>&gt; 
<br>&gt; were receiving these kinds of messages:
<br>&gt; 
<br>&gt; 2012-12-05\\01110:40:13\\011ogm42\\011dansguardian[21839]: 
<br>&gt; 2012.12.5-10:40:13\\011-\\01110.42.1.208\\011<a href="http://i.radikal.com.tr/90x70/2012/12/05/fft68_mf1227270.Jpeg">http://i.radikal.com.tr/90x70/2012/12/05/fft68_mf1227270.Jpeg</a>\\011*EXCEPTION*Ayricalikli_kullanici_adina_sahipsiniz.\\011GET\\0112499\\0110\\011\\0111\\011200\\011-\\011\\011\\011-\\011 
<br>&gt; 18
<br>&gt; 
<br>&gt; You can see that \\011 was a kind of delimeter to us.
<br>&gt; 
<br>&gt; -----------
<br>&gt; 
<br>&gt; And in the new syslog-ng version we have the following config (with 4 
<br>&gt; back slash \\\\, $MSG changed to $MSGHDR$MSGONLY and template-escape 
<br>&gt; changed from yes to no):
<br>&gt; 
<br>&gt; destination webfilter {
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;unix-stream("/var/log/streams/webfilter"
<br>&gt; template("$YEAR-$MONTH-$DAY\\\\011$HOUR:$MIN:$SEC\\\\011$HOST\\\\011$MSGHDR$MSGONLY\n")
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;template-escape(no)
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;);
<br>&gt; };
<br>&gt; 
<br>&gt; filter f_webfilter {
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;match("dansguardian\\[.*\\]: .*\t");
<br>&gt; };
<br>&gt; 
<br>&gt; log {
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;source(s_all);
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;filter(f_webfilter);
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;destination(webfilter);
<br>&gt; };
<br>&gt; 
<br>&gt; We get the following output (The first parts are okay. But the \\011 int 
<br>&gt; the $MSGONLY have become \t):
<br>&gt; 
<br>&gt; 2012-12-05\\01110:45:24\\011localhost\\011dansguardian[21135]: 
<br>&gt; 2012.12.5-10:45:24\t-\t127.0.0.1\t<a href="http://www.ipnedir.com">http://www.ipnedir.com</a>\t*SCANNED*\tGET\t3616\t0\t\t1\t200\ttext/html\t\t\t-\t 
<br>&gt; 76
<br>&gt; 
<br>&gt; ------------
<br>&gt; 
<br>&gt; With this config:
<br>&gt; 
<br>&gt; destination webfilter {
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;unix-stream("/var/log/streams/webfilter"
<br>&gt; template("$YEAR-$MONTH-$DAY\\\\011$HOUR:$MIN:$SEC\\\\011$HOST\\\\011$MSGHDR$MSGONLY\n")
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;template-escape(no)
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;);
<br>&gt; };
<br>&gt; 
<br>&gt; filter f_webfilter {
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;match("dansguardian\\[.*\\]: .*\t");
<br>&gt; };
<br>&gt; 
<br>&gt; log {
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;source(s_all);
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;filter(f_webfilter);
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;destination(webfilter);
<br>&gt; };
<br>&gt; 
<br>&gt; We get the following output (The first parts are okay. But the \\011 int 
<br>&gt; the $MSGONLY are lost)
<br>&gt; 
<br>&gt; 2012-12-05\\01110:48:33\\011localhost\\011dansguardian[21135]: 
<br>&gt; 2012.12.5-10:48:33-127.0.0.1<a href="http://www.ipnedir.comGET361601200text/html-">http://www.ipnedir.comGET361601200text/html-</a>
<br>&gt; 73
<br>&gt; 
<br>&gt; -----------------
<br>&gt; 
<br>&gt; With this config:
<br>&gt; 
<br>&gt; destination webfilter {
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;unix-stream("/var/log/streams/webfilter"
<br>&gt; template("$YEAR-$MONTH-$DAY\\011$HOUR:$MIN:$SEC\\011$HOST\\011$MSGHDR$MSGONLY\n")
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;template-escape(no)
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;);
<br>&gt; };
<br>&gt; 
<br>&gt; filter f_webfilter {
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;match("dansguardian\\[.*\\]: .*\t");
<br>&gt; };
<br>&gt; 
<br>&gt; log {
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;source(s_all);
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;filter(f_webfilter);
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;destination(webfilter);
<br>&gt; };
<br>&gt; 
<br>&gt; We get the following output (Now the output has become completely wrong)
<br>&gt; 
<br>&gt; 2012-12-0501110:52:06011localhost011dansguardian[21135]: 
<br>&gt; 2012.12.5-10:52:06\t-\t127.0.0.1\t<a href="http://www.ipnedir.com">http://www.ipnedir.com</a>\t\tGET\t3616\t0\t\t1\t200\ttext/html\t\t\t-\t 
<br>&gt; 89
<br>&gt; 
<br>&gt; ---------------------
<br>&gt; 
<br>&gt; And finally with this config:
<br>&gt; 
<br>&gt; destination webfilter {
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;unix-stream("/var/log/streams/webfilter"
<br>&gt; template("$YEAR-$MONTH-$DAY\\011$HOUR:$MIN:$SEC\\011$HOST\\011$MSGHDR$MSGONLY\n")
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;template-escape(yes)
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;);
<br>&gt; };
<br>&gt; 
<br>&gt; filter f_webfilter {
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;match("dansguardian\\[.*\\]: .*\t");
<br>&gt; };
<br>&gt; 
<br>&gt; log {
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;source(s_all);
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;filter(f_webfilter);
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;destination(webfilter);
<br>&gt; };
<br>&gt; 
<br>&gt; We get the following output (Note that this config is the same config 
<br>&gt; with the one we used in 2.0.9 except the $MSGHDR$MSGONLY part )
<br>&gt; 
<br>&gt; 2012-12-0501110:53:58011localhost011dansguardian[21135]: 
<br>&gt; 2012.12.5-10:53:58-127.0.0.1<a href="http://www.ipnedir.comGET361601200text/html-">http://www.ipnedir.comGET361601200text/html-</a>
<br>&gt; 184
<br>&gt; 
<br>&gt; ---------------------------
<br>&gt; 
<br>&gt; So what we want to accomplish is that we want the old output back with 
<br>&gt; the new syslog :)
<br>&gt; 
<br>&gt; How can we achieve this? Btw when restarting syslog-ng service we get 
<br>&gt; the following messages. I don't know if it has anything to do with this.
<br>&gt; 
<br>&gt; Restarting syslog-ng: Error opening plugin module; module='dbparser', 
<br>&gt; error='/usr/lib/syslog-ng/libdbparser.so: undefined symbol: evt_tag_long'
<br>&gt; Your configuration file uses an obsoleted keyword, please update your 
<br>&gt; configuration; keyword='log_prefix', change='program_override'
<br>&gt; WARNING: the match() filter without the use of the value() option is 
<br>&gt; deprecated and hinders performance, please update your configuration;
<br>&gt; Your configuration file uses an obsoleted keyword, please update your 
<br>&gt; configuration; keyword='sync', change='flush_lines'
<br>&gt; 
<br>&gt; Shutting down syslog-ng:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;[&nbsp; &#32;OK&nbsp; &#32;]
<br>&gt; Starting syslog-ng: Error opening plugin module; module='dbparser', 
<br>&gt; error='/usr/lib/syslog-ng/libdbparser.so: undefined symbol: evt_tag_long'
<br>&gt; Your configuration file uses an obsoleted keyword, please update your 
<br>&gt; configuration; keyword='log_prefix', change='program_override'
<br>&gt; WARNING: the match() filter without the use of the value() option is 
<br>&gt; deprecated and hinders performance, please update your configuration;
<br>&gt; Your configuration file uses an obsoleted keyword, please update your 
<br>&gt; configuration; keyword='sync', change='flush_lines'
<br>&gt; WARNING: window sizing for tcp sources were changed in syslog-ng 3.3, 
<br>&gt; the configuration value was divided by the value of max-connections(). 
<br>&gt; The result was too small, clamping to 100 entries. Ensure you have a 
<br>&gt; proper log_fifo_size setting to avoid message loss.; 
<br>&gt; orig_log_iw_size='10', new_log_iw_size='100', min_log_fifo_size='10000'
<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#32;[&nbsp; &#32;OK&nbsp; &#32;]
<br>&gt; 
<br>&gt; 
<br>&gt; 
<br>&gt; ______________________________________________________________________________
<br>&gt; Member info: <a href="https://lists.balabit.hu/mailman/listinfo/syslog-ng">https://lists.balabit.hu/mailman/listinfo/syslog-ng</a>
<br>&gt; Documentation:
<br>&gt; <a href="http://www.balabit.com/support/documentation/?product=syslog-ng">http://www.balabit.com/support/documentation/?product=syslog-ng</a> FAQ:
<br>&gt; <a href="http://www.balabit.com/wiki/syslog-ng-faq">http://www.balabit.com/wiki/syslog-ng-faq</a>
<br>&gt; 
<br><br></p>
</body>
</html>