[syslog-ng] advice/assistance with parsing attempt requested
Bill Anderson
Bill.Anderson at bodybuilding.com
Wed Dec 8 16:50:17 CET 2010
On Dec 8, 2010, at 8:42 AM, <syslog-ng2010 at hushmail.com> <syslog-ng2010 at hushmail.com> wrote:
> MANY thanks for all of the great answers guys!
>
> as the pattern permutations would be less than desirable to
> maintain, i've gone ahead and given the program destination another
> attempt. this time leveraging python as opposed to perl (even
> though i too believe perl ought be able to handle the volume
> (roughly 300k per 5 minutes). i didn't write the original non-
> functional script and happen to favor python. by setting two
> destinations (one writing the raw stream to file and the other
> sending to a program which does parsing) i can see that this
> external parsing does indeed keep a one to one ratio!
Interesting!
> destination d_parser {
> program("/opt/bin/python /opt/syslog-ng/config/parser.py >>
> /opt/syslog-ng/logs/logfile");
> };
>
> when i run "/opt/bin/python /opt/syslog-ng/config/parser.py" from
> the cmd line, and pipe input into it (i'm reading stdin); it runs
> as expected and the desired output is sent to screen/stdout
>
> when i start the syslog-ng service (which uses the conf file which
> in turn calls the python program in destination d_parser), unlike
> the perl script which does the same thing (print to screen/stdout)
> and does in fact add entries to /opt/syslog-ng/logs/logfile; no
> output is ever sent to the /opt/syslog-ng/logs/logfile ... UNTIL, i
> stop the syslog service and then, all the expected output comes
> flushing into /opt/syslog-ng/logs/logfile
>
> the issue has me really stumped. how/why would the output from perl
> make it to /opt/syslog-ng/logs/logfile in "real-time" yet, the
> output from python only make it to /opt/syslog-ng/logs/logfile as a
> batch upon stopping the service!?!?
The perl script may have had output buffering disabled. You could do the same w/Python though I'd recommend just writing to the file directly in Python over relying on pipe redirection.
If you want to stick w/output redirection, try modifying adding the unbuffered option to the shebang line:
#/path/to/python -u
Cheers,
Bill
More information about the syslog-ng
mailing list