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