Edit report at https://bugs.php.net/bug.php?id=52052&edit=1
ID: 52052
Comment by: fat@php.net
Reported by: ef-lists at email dot de
Summary: add syslog support to FPM
Status: Assigned
Type: Feature/Change Request
Package: FPM related
Operating System: Linux/*NIX
PHP Version: 5.3SVN-2010-06-11 (SVN)
Assigned To: fat
Block user comment: N
Private report: N
New Comment:
to allow syslog on children, we'll have to wait until
https://bugs.php.net/bug.php?id=51118 is closed.
Previous Comments:
------------------------------------------------------------------------
[2011-04-12 02:17:31] mark at catseye dot org
I tried this out in a development snapshot for PHP 5.3.7, but found that calls to zlog() from
children were not showing up in syslog.
The following change fixes the problem; let me know if you'd like me to upload a new version of
the patch.
diff -up php-snap/sapi/fpm/fpm/fpm_stdio.c.syslog php-snap/sapi/fpm/fpm/fpm_st
dio.c
--- php-snap/sapi/fpm/fpm/fpm_stdio.c.syslog 2011-04-11 19:10:17.425036568 -0
400
+++ php-snap/sapi/fpm/fpm/fpm_stdio.c 2011-04-11 19:10:24.569131370 -0400
@@ -64,9 +64,9 @@ int fpm_stdio_init_child(struct fpm_work
#endif
{
close(fpm_globals.error_log_fd);
+ fpm_globals.error_log_fd = -1;
+ zlog_set_fd(-1);
}
- fpm_globals.error_log_fd = -1;
- zlog_set_fd(-1);
if (wp->listening_socket != STDIN_FILENO) {
if (0 > dup2(wp->listening_socket, STDIN_FILENO)) {
------------------------------------------------------------------------
[2011-02-15 21:34:21] php at mike2k dot com
I would log everything under a consistent ident/facility myself.
Then you have all FPM stuff coming in one stream. If you want to split it up then
you can use filters inside of whatever syslog tools you use.
$.02
------------------------------------------------------------------------
[2011-02-15 19:42:45] kyle_leaders at mcgraw-hill dot com
As a small fix to this, I just noticed that in 5.3.5, PHP-FPM logs correctly to
the syslog, but the syslog tag is incorrect.
If for example you have a pool named "www" it will log to syslog like so:
2011-02-15 13:28:09.172141-05:00 hostname w: PHP Warning: ocierror() expects
parameter 1 to be resource, null given in filename.php on line 177
Similarly if you have a longer pool name (poolname) it'll show up like so:
2011-02-15 13:28:09.172141-05:00 hostname olname: PHP Warning: ocierror()
expects parameter 1 to be resource, null given in filename.php on line 177
It seems to be chopping off the first 2 characters of the pool name when it
reports the syslog tag/program name to syslog.
------------------------------------------------------------------------
[2011-02-10 07:58:45] ef-lists at email dot de
Oh you're right. We're actually experiencing this issue here.
At least the master process should always log to the configured ident/facility - that's
configuration and process manager warnings/errors. By far the most important log output from FPM,
IMHO.
I don't think this is a critical issue for FPM, as log output is never discarded and other
sapis (milter, thttpd, mod_php with Apache ErrorLog set to syslog) do it the same way - although it
would be nice to see this resolved. I still wonder how to properly do this... open a separate socket
and mimic syslog behaviour? How to address this on Windows?
If you have updates, I'd be really curious. If I can help, let me know. :-)
------------------------------------------------------------------------
[2011-01-29 15:46:44] fat@php.net
thx for the up to date patch. But there is still a remaining problem:
php_syslog(), openlog() and closelog() can be called from FPM code, core code,
user script, module, sapi, ...
If two calls to openlog() are made from two different places. Then this is not
sure than php_syslog() will log the right ident and facility.
This a global reflection to make around PHP and not only in FPM.
I'm working on it.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=52052
--
Edit this bug report at https://bugs.php.net/bug.php?id=52052&edit=1