2

Sending output from php script called from bash script to syslog

Im trying to create a bash script (to be called by a cron job) which calls a php file (which I have not made). Calling the php file is easy enough. The php script output a lot of stuff to stdout and I would like to redirect the output from the php script to logger so that I can monitor the progress in my remote syslog server.

I've tried something like:

PHP_SCRIPT_PATH="/some/path"
ME=basename $0

LOGGER="logger -p cron.notice -t $ME"

cd $PHP_SCRIPT_PATH
php the_php_script.php &> eval $LOGGER


Also tried:
php the_php_script.php | eval $LOGGER
But neither work.

Another possible solution I've considered is to pipe the output from the php script to a log file, and then have another bash script read that file and write each line to a logger. But I would like to have one script which does everything :)

Can anyone please help?

Lonos
  • 23
  • 3
  • I'd look if there isn't a syslog client implementation in php first and use logger if there's none : That will allow you to control logging line per line inside the_php_script.php; edit : http://php.net/manual/en/function.syslog.php –  Jan 05 '13 at 20:56

1 Answers1

2

Your calls to logger are failing because $LOGGER isn't the command. Try this instead:

LOGGER=logger
LOGGER_OPTS="-p cron.notice -t $ME"

php whatever.php | $LOGGER $LOGGER_OPTS
Michael Hampton
  • 244,070
  • 43
  • 506
  • 972