0

我目前正在websocketCodeIgniter 2 中运行一个守护程序。该守护程序开始使用nohup并在一个永恒循环中运行。错误输出格式为 HTML。但是,我希望在没有 HTML 格式的情况下记录错误。CodeIgniter 是否可以选择使这成为可能?

编辑: 我不仅在跟踪错误。我也在保存websocket日志。日志包含已运行的功能和其他有用信息。我不想隐藏日志中的错误,因为它们可能对跟踪一些错误很有用。我想记录我的自定义websocket消息以及可能发生的错误。

守护进程启动命令:

nohup php /usr/share/nginx/html/index.php websocket server > /var/log/websocket/$(date +"%Y%m%d_%H%M%S") 2>&1 &

日志中的错误如下所示:

<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

<h4>A PHP Error was encountered</h4>

<p>Severity: Notice</p>
<p>Message:  Undefined index: REMOTE_ADDR</p>
<p>Filename: core/Input.php</p>
<p>Line Number: 351</p>
4

1 回答 1

1

我认为你把事情搞混了,有日志,有页面/脚本产生的输出。

您正在做的是将脚本的输出保存到日志中,所有输出,包括 php 错误、通知、警告和 codeigniter 的错误(无法连接到数据库)。

据我所知,Codeigniter 与 PHP 错误没有太大关系,这意味着这种格式实际上来自 php 进程本身,据我所知,您无法阻止这种格式。

如果要捕获所有错误,可以抑制所有错误并使用 php 的本机error_get_last方法,这将返回如下内容:

Array
(
    [type] => 8
    [message] => Undefined variable: a
    [file] => C:\WWW\index.php
    [line] => 2
)

但是,如果您有编译错误,此方法将不起作用,因为它需要首先编译代码。

Apache 应该会自动为您保存错误,我很确定可以在 php.ini 中进行配置,但我已经有一段时间没有这样做了。

总之,我不认为将整个输出保存到日志中是跟踪错误的最佳方式。

参考文档: http: //php.net/manual/en/function.error-get-last.php

于 2015-04-17T07:39:38.560 回答