通过 php error_log 使用 syslog 工具

问题描述 投票:0回答:2

是否可以在 php error_log 指令中或在系统/服务器端以其他方式使用 syslog facilities

类似...

error_log = syslog:local4
error_log = syslog(LOG_LOCAL4)

使用 php fpm 我可以使用 fpm conf 中的 syslog.facility 指令进行设置,但是 php cli 呢?

谢谢

php syslog
2个回答
3
投票

Php 默认系统日志的工具是“用户”(并且无法更改)

我在phi.ini中使用指令auto_prepend_file(该脚本必须位于include_path下)

auto_prepend_file = log.php

root@sp:/etc/php5/cli# cat /usr/share/php5/log.php
<?php

openlog('php-cli', 0, LOG_LOCAL4);

0
投票

您可以通过在 CLI 或 Apache php.ini 文件中配置 error_log 内容来将其配置为转到 syslog;或者在您的 Apache 配置文件中以每个站点为基础。

PHP 站点范围

例如,要配置所有网站登录到系统日志,请编辑以下文件:

/etc/php/7.4/apache2/php.ini

搜索,然后编辑以下默认注释掉的值:

error_log    = syslog
syslog.ident = YOUR_IDENTIFIER

上述内容将导致 error_log() 调用被记录到“YOUR_IDENTIFIER.log”中。

或者,对于 PHP 命令行程序,您可以编辑:

/etc/php/7.4/php/php.ini

Apache 网站特定日志记录

但是,在使用 Apache 时,您可能希望将日志记录到单独的文件中。 在这种情况下,您只需更新站点特定的 Apache 配置文件。

添加适当的目录部分,然后使用“php_value”和“php_admin_value”指令来设置这些值。 例如:

<VirtualHost *:80>
...
   <Directory /path/to/website/>
   php_value error_log syslog
   php_admin_value syslog.ident YOUR_IDENTIFIER
   </Directory>
...
</VirtualHost>

或者,您可以使用“PHPINIDir”指令使网站使用完全不同的“php.ini”文件。 例如:

<VirtualHost *.80>
...
   PHPINIDir /etc/apache/my_website
...
</VirtualHost>

“my_website”目录包含经过适当编辑的“php.ini”副本。

参考文献

  1. 日志文件 - Apache HTTP 服务器版本 2.4

  2. 如何更改配置设置(PHP 手册)

  3. php.ini 指令列表(PHP 手册)

  4. 如何为网站指定客户php.ini

© www.soinside.com 2019 - 2024. All rights reserved.