我正在尝试决定用于记录到自定义文件的功能。
背景
我们有多个PHP进程,既作为Apaches(mod_php),也作为Deamons(CLI,forked)运行。我想能够指定每个进程/任务要写入的日志文件。对于Apache进程和Deamons,多个进程将写入同一文件。
选项
PHP提供error_log()
和syslog()
两种选择。两者似乎都提供了更或多或少相同的功能。
我的问题
- 这些函数的优缺点是什么?
- 应该选择哪一个?(为什么?)
- 如果放弃多个文件的要求会怎样?
我正在尝试决定用于记录到自定义文件的功能。
背景
我们有多个PHP进程,既作为Apaches(mod_php),也作为Deamons(CLI,forked)运行。我想能够指定每个进程/任务要写入的日志文件。对于Apache进程和Deamons,多个进程将写入同一文件。
选项
PHP提供error_log()
和syslog()
两种选择。两者似乎都提供了更或多或少相同的功能。
我的问题
syslog
将消息发送到操作系统日志记录器,而error_log
有多个选项,可以将消息发送到操作系统日志记录器、电子邮件、文件或SAPI日志处理程序,如文档中所述。
由于您要写入多个日志,我建议使用error_log
和$message_type = 3
,这样可以将消息添加到在$destination
参数中设置的文件中。
error_log
php.ini 指令(如果使用ini_set('error_log', '/path/to/log/file')
则应该可以工作),并使用trigger_error()
生成错误消息。这样,您将使用 PHP 级别的错误记录(而不是操作系统级别的错误记录),并且不必像使用error_log()
函数一样指定$destination
。 - binaryLVtrigger_error()
与通过set_error_handler()
实现的自定义错误处理功能相结合,我们希望这个自定义错误处理程序以最高效的方式记录到文件中。 - Jacco