<div dir="ltr">I am trying to redirect all log messages to a destination program (written in java).<br>This did not do much so I redirected all messages to a single catch-all log file AND also to a bash shell script that runs an endless loop, reads a line and spit it out to a text file.<br>
The shell script is killed by syslog-ng after the 5th message. The catch-all file, however, keeps getting all of the messages (that's how I know who is killing who).<br><br>Here is the config file for syslog-ng:<br><div style="margin-left: 40px;">
<br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);"><span style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">options {</span><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">
<span style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);"> ts_format(iso);</span><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);"><span style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);"> frac_digits(3);</span><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">
<span style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">};</span><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);"><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">
<span style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">template bds_template{</span><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);"><span style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);"> template("<pri=$PRI> <date=$ISODATE> <host=$HOST> <msg=$MSG>\n");</span><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">
<span style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">template_escape(no);</span><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);"><span style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">};</span><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">
<br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);"><span style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">source src{</span><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">
<span style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);"> internal();</span><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);"><span style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);"> unix_stream("/dev/log");</span><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">
<span style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);"> unix-dgram("/dev/log");</span><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);"><span style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);"> file("/proc/kmsg" log_prefix("kernel:"));</span><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">
<span style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);"> udp();</span><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);"><span style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);"> tcp();</span><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">
<span style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">};</span><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);"><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">
<br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);"><span style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">destination test_adapter{</span><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">
<span style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">program("bash /usr/local/bds/logger/syslogAdapterTest.sh" template(bds_template));</span><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">
<span style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">};</span><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);"><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">
<span style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">log { source(src); destination(test_adapter); };</span><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);"><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">
<span style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">destination catchAll{</span><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);"><span style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">file("/var/log/syslog-ng-catch-all.log", template(bds_template));</span><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">
<span style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">};</span><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);"><br style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">
<span style="background-color: rgb(204, 204, 204); color: rgb(51, 51, 255);">log { source(src); destination(catchAll); };</span><br></div><br>Here is the bash script:<br><br><div style="margin-left: 40px; background-color: rgb(204, 204, 204); color: rgb(0, 0, 153);">
#!/bin/bash<br><br>file="/root/syslogAdapterTest"<br>counter=1<br>limit=3<br><br><br>while true<br></div><div style="margin-left: 80px; background-color: rgb(204, 204, 204); color: rgb(0, 0, 153);">do<br></div><div style="margin-left: 80px; background-color: rgb(204, 204, 204); color: rgb(0, 0, 153);">
<div style="margin-left: 40px;">read line<br>echo "$line" > $file.$counter<br>((counter++))<br></div></div><div style="margin-left: 80px; background-color: rgb(204, 204, 204); color: rgb(0, 0, 153);">done<br>
</div><br>and finally the content of the catch-all file, in blue are the log messages that the shell script still captures and spits to text files, in red are the messages are the messages the shell does not get:<br><br><div style="margin-left: 40px; background-color: rgb(204, 204, 204); color: rgb(0, 0, 153);">
<pri=45> <date=2008-08-19T15:13:56.191-05:00> <host=oracle-test> <msg=syslog-ng[27971]: Server license found, starting in server mode; customer='University of Illinois', serial='49544f30-573e-11dd-9892-0007e9195011', limit='25'><br>
<pri=46> <date=2008-08-19T15:13:56.191-05:00> <host=oracle-test> <msg=syslog-ng[27971]: Starting destination program; cmdline='bash /usr/local/bds/logger/syslogAdapterTest.sh'><br><pri=45> <date=2008-08-19T15:13:56.193-05:00> <host=oracle-test> <msg=syslog-ng[27971]: syslog-ng starting up; version='2.1.11a'><br>
<pri=46> <date=2008-08-19T15:13:56.193-05:00> <host=oracle-test> <msg=syslog-ng[27971]: Initializing destination file writer; template='/var/log/syslog-ng-catch-all.log', filename='/var/log/syslog-ng-catch-all.log'><br>
<pri=45> <date=2008-08-19T15:13:56.193-05:00> <host=oracle-test> <msg=syslog-ng[27971]: License validity expires in one week, logging service will terminate at that point; error='License outside the validity period (option=syslog-ng, not-before=2008/07/21, not-after=2008/08/21)'><br>
<b style="color: rgb(204, 0, 0);"><pri=43> <date=2008-08-19T15:13:56.198-05:00> <host=oracle-test> <msg=syslog-ng[27971]: I/O error occurred while writing; fd='11', error='Broken pipe (32)'><br>
<pri=46> <date=2008-08-19T15:13:56.198-05:00> <host=oracle-test> <msg=syslog-ng[27971]: Sending child a TERM signal; child_pid='27972'></b><br></div><br>Any idea?<br></div>