Re: [syslog-ng] Issue about using perl script in Receiving messages from external applications
You are probably suffering from perl's buffering. I forget the exact syntax right now but a quick google of disabling Perl auto flush should give you what you need. Jian Zhu <zhujian0805@gmail.com> wrote: Hello, Could anyone please help me on this below issue? my syslog-ng.conf file look like below: The test.sh script work fine, I can see it's output in the test.sh.log file. But the test.pl<http://test.pl> doesn't work. the test.sh and test.pl<http://test.pl> have the same function of printing something to STDOUT. ------------------------------ ------------------------------------------------------------------------------------------------------------------- @version: 3.0 #Default configuration file for syslog-ng. # # For a description of syslog-ng configuration file directives, please read # the syslog-ng Administrator’s guide at: # # http://www.balabit.com/dl/html/syslog-ng-admin-guide_en.html/bk01-toc.html # options { # Number of syslog lines stored in memory before being written to files flush_lines (0); log_fifo_size (2048); create_dirs (yes); perm (0640); dir_perm (0750); }; source ppp { program("/root/perl/test.pl<http://test.pl>"); }; destination ppp { file ("/var/log/syslog-ng/$HOST/perl.pl.log" create_dirs(yes)); }; log { source(ppp); destination(ppp); }; source sss { program("/root/shell/test.sh"); }; destination sss { file ("/var/log/syslog-ng/$HOST/test.sh.log" create_dirs(yes)); }; log { source(sss); destination(sss); }; ------------------------------------------------------------------------------------------------------------------------------------------------- -- Thanks & Best Regards James Zhu Mobile: +86 186 8482 2818 Email: zhujian0805@gmail.com<mailto:zhujian0805@gmail.com>
Thanks you Evan for you quick response. I changed my script as below and now it's working fine. #!/usr/bin/perl $i=0; while(true){ $i++; * #added below 2 lines to force a flush right away and after every print #according to perl document: "STDOUT will typically be line buffered if output is to the terminal and block buffered otherwise." #since the output is not to terminal so here it's block buffered, i guess this is the root cause.* select(STDOUT); $| = 1; print STDOUT "hello $i\n"; sleep 1; } On Fri, Aug 10, 2012 at 8:52 AM, Evan Rempel <erempel@uvic.ca> wrote:
You are probably suffering from perl's buffering. I forget the exact syntax right now but a quick google of disabling Perl auto flush should give you what you need.
Jian Zhu <zhujian0805@gmail.com> wrote:
Hello,
Could anyone please help me on this below issue?
my syslog-ng.conf file look like below:
The test.sh script work fine, I can see it's output in the test.sh.log file. But the test.pl doesn't work. the test.sh and test.pl have the same function of printing something to STDOUT. ------------------------------
------------------------------------------------------------------------------------------------------------------- @version: 3.0 #Default configuration file for syslog-ng. # # For a description of syslog-ng configuration file directives, please read # the syslog-ng Administrator’s guide at: # # http://www.balabit.com/dl/html/syslog-ng-admin-guide_en.html/bk01-toc.html # options { # Number of syslog lines stored in memory before being written to files flush_lines (0); log_fifo_size (2048); create_dirs (yes); perm (0640); dir_perm (0750); };
source ppp { program("/root/perl/test.pl"); }; destination ppp { file ("/var/log/syslog-ng/$HOST/perl.pl.log" create_dirs(yes)); }; log { source(ppp); destination(ppp); };
source sss { program("/root/shell/test.sh"); }; destination sss { file ("/var/log/syslog-ng/$HOST/test.sh.log" create_dirs(yes)); }; log { source(sss); destination(sss); };
-------------------------------------------------------------------------------------------------------------------------------------------------
--
*Thanks & Best Regards*
*James Zhu*
*Mobile**:* *+86 18**6 8482 2818*
*Email: *zhujian0805@gmail.com
______________________________________________________________________________ Member info: https://lists.balabit.hu/mailman/listinfo/syslog-ng Documentation: http://www.balabit.com/support/documentation/?product=syslog-ng FAQ: http://www.balabit.com/wiki/syslog-ng-faq
-- *Thanks & Best Regards* *James Zhu* *Mobile**:* *+86 18**6 8482 2818* *Email: *zhujian0805@gmail.com
Hi, IMO you should put the 2 lines before the while() block. You only have to set it once. On Fri, Aug 10, 2012 at 09:02:26AM +0800, Jian Zhu wrote:
Thanks you Evan for you quick response. I changed my script as below and now it's working fine.
#!/usr/bin/perl
$i=0; while(true){ $i++; #added below 2 lines to force a flush right away and after every print #according to perl document: "STDOUT will typically be line buffered if output is to the terminal and block buffered otherwise." #since the output is not to terminal so here it's block buffered, i guess this is the root cause. select(STDOUT); $| = 1;
print STDOUT "hello $i\n";
sleep 1;
}
On Fri, Aug 10, 2012 at 8:52 AM, Evan Rempel <erempel@uvic.ca> wrote:
You are probably suffering from perl's buffering. I forget the exact syntax right now but a quick google of disabling Perl auto flush should give you what you need.
Jian Zhu <zhujian0805@gmail.com> wrote:
Hello,
Could anyone please help me on this below issue?
my syslog-ng.conf file look like below:
The test.sh script work fine, I can see it's output in the test.sh.log file. But the test.pl doesn't work. the test.sh and test.pl have the same function of printing something to STDOUT. ------------------------------ ------------------------------------------------------------------------------------------------------------------- @version: 3.0 #Default configuration file for syslog-ng. # # For a description of syslog-ng configuration file directives, please read # the syslog-ng Administrator s guide at: # # http://www.balabit.com/dl/html/syslog-ng-admin-guide_en.html/ bk01-toc.html # options { # Number of syslog lines stored in memory before being written to files flush_lines (0); log_fifo_size (2048); create_dirs (yes); perm (0640); dir_perm (0750); };
source ppp { program("/root/perl/test.pl"); }; destination ppp { file ("/var/log/syslog-ng/$HOST/perl.pl.log" create_dirs(yes)); }; log { source(ppp); destination(ppp); };
source sss { program("/root/shell/test.sh"); }; destination sss { file ("/var/log/syslog-ng/$HOST/test.sh.log" create_dirs(yes)); }; log { source(sss); destination(sss); }; -------------------------------------------------------------------------------------------------------------------------------------------------
--
Thanks & Best Regards
James Zhu
Mobile: +86 186 8482 2818
Email: zhujian0805@gmail.com
______________________________________________________________________________ Member info: https://lists.balabit.hu/mailman/listinfo/syslog-ng Documentation: http://www.balabit.com/support/documentation/?product= syslog-ng FAQ: http://www.balabit.com/wiki/syslog-ng-faq
--
Thanks & Best Regards
James Zhu
Mobile: +86 186 8482 2818
Email: zhujian0805@gmail.com
______________________________________________________________________________ Member info: https://lists.balabit.hu/mailman/listinfo/syslog-ng Documentation: http://www.balabit.com/support/documentation/?product=syslog-ng FAQ: http://www.balabit.com/wiki/syslog-ng-faq
-- Pal Tamas/Folti folti@balabit.hu
Right. Thanks :) On Fri, Aug 10, 2012 at 4:31 PM, Pal Tamas <folti@balabit.hu> wrote:
Hi,
IMO you should put the 2 lines before the while() block. You only have to set it once.
On Fri, Aug 10, 2012 at 09:02:26AM +0800, Jian Zhu wrote:
Thanks you Evan for you quick response. I changed my script as below and now it's working fine.
#!/usr/bin/perl
$i=0; while(true){ $i++; #added below 2 lines to force a flush right away and after every print #according to perl document: "STDOUT will typically be line buffered if output is to the terminal and block buffered otherwise." #since the output is not to terminal so here it's block buffered, i guess this is the root cause. select(STDOUT); $| = 1;
print STDOUT "hello $i\n";
sleep 1;
}
On Fri, Aug 10, 2012 at 8:52 AM, Evan Rempel <erempel@uvic.ca> wrote:
You are probably suffering from perl's buffering. I forget the exact syntax right now but a quick google of disabling Perl auto flush should give you what you need.
Jian Zhu <zhujian0805@gmail.com> wrote:
Hello,
Could anyone please help me on this below issue?
my syslog-ng.conf file look like below:
The test.sh script work fine, I can see it's output in the test.sh.log file. But the test.pl doesn't work. the test.sh and test.pl have the same function of printing something to STDOUT. ------------------------------
-------------------------------------------------------------------------------------------------------------------
@version: 3.0 #Default configuration file for syslog-ng. # # For a description of syslog-ng configuration file directives,
please read
# the syslog-ng Administrator s guide at: # # http://www.balabit.com/dl/html/syslog-ng-admin-guide_en.html/ bk01-toc.html # options { # Number of syslog lines stored in memory before being written to
files
flush_lines (0); log_fifo_size (2048); create_dirs (yes); perm (0640); dir_perm (0750); };
source ppp { program("/root/perl/test.pl"); }; destination ppp { file ("/var/log/syslog-ng/$HOST/perl.pl.log" create_dirs(yes)); }; log { source(ppp); destination(ppp); };
source sss { program("/root/shell/test.sh"); }; destination sss { file ("/var/log/syslog-ng/$HOST/test.sh.log" create_dirs(yes)); }; log { source(sss); destination(sss); };
-------------------------------------------------------------------------------------------------------------------------------------------------
--
Thanks & Best Regards
James Zhu
Mobile: +86 186 8482 2818
Email: zhujian0805@gmail.com
______________________________________________________________________________
Member info: https://lists.balabit.hu/mailman/listinfo/syslog-ng Documentation:
http://www.balabit.com/support/documentation/?product=
syslog-ng FAQ: http://www.balabit.com/wiki/syslog-ng-faq
--
Thanks & Best Regards
James Zhu
Mobile: +86 186 8482 2818
Email: zhujian0805@gmail.com
______________________________________________________________________________
Member info: https://lists.balabit.hu/mailman/listinfo/syslog-ng Documentation: http://www.balabit.com/support/documentation/?product=syslog-ng FAQ: http://www.balabit.com/wiki/syslog-ng-faq
-- Pal Tamas/Folti folti@balabit.hu
______________________________________________________________________________ Member info: https://lists.balabit.hu/mailman/listinfo/syslog-ng Documentation: http://www.balabit.com/support/documentation/?product=syslog-ng FAQ: http://www.balabit.com/wiki/syslog-ng-faq
-- *Thanks & Best Regards* *James Zhu* *Mobile**:* *+86 18**6 8482 2818* *Email: *zhujian0805@gmail.com
participants (3)
-
Evan Rempel
-
Jian Zhu
-
Pal Tamas