2017-02-17 57 views
0

我目前正在開展一個項目,並且伸出援助之手,我已經更改了我的php.ini文件,以便將錯誤記錄到「php_errors.log」 PHP文件返回錯誤的目錄。PHP錯誤日誌 - php.ini php錯誤的唯一文件

我想知道,在網上搜索(也許我不是這樣寫的話),有沒有什麼辦法在php.ini文件中爲不同的錯誤設置一個唯一的文件名。

例如,如果我們說account.php發生錯誤,是否有任何方法通過ini文件記錄錯誤文件「account_php_errors.log」?

回答

0

您可以在應用程序中創建自定義錯誤處理程序。您應該能夠從這裏

// error handler function 
function myErrorHandler($errno, $errstr, $errfile, $errline) { 
// file_put_contents 
} 

set_error_handler("myErrorHandler"); 

得到所有需要的信息更多信息: http://php.net/manual/en/function.set-error-handler.php

我會重新考慮的宗旨,爲保持錯誤日誌在不同的目錄,因爲它會使您的應用程序混亂。從單獨的不同文件夾中挑選日誌並不那麼方便,如果您想要使用彈性搜索添加Logstash等日誌監視工具,您將被迫執行更復雜的設置。

+0

感謝您的回覆和代碼示例,我會多看一看。 –

1

您無法使用php.ini根據生成致命錯誤的php文件登錄到多個文件。

您可以嘗試並使用register_shutdown_function來捕捉致命錯誤,然後使用['file']登錄到單個文件,您可以通過數組響應get_last_error

如果你正在用try/catch Exceptions實踐面向對象編程,你可以使用一些日誌記錄方法將錯誤分離成單個文件。

+0

感謝您的回覆,我會更多地關注自定義錯誤處理,而不是您提到的內容,但對於知道這一點非常有用,我可能會在某個時候回顧此問題。 –

2

從您可以設置一個全球性的錯誤文件,如果你想覆蓋,你可以添加以下行到「account.php」

的ini_set ini文件(「log_errors」,1);

ini_set(「error_log」,「/path/to/logfile.log」);

error_log(「one error」);

  • 或者如果您使用框架,您可以查看文檔以查看如何自定義錯誤。框架將具有高級日誌記錄機制。
+0

謝謝你的回覆,我會多看看這個。 –

1

php.ini文件內部的選項本身並不靈活(這實際上是一件好事,所以其他程序如logrotate可以以有效的方式應用)。你可以看看通過你的應用程序來完成你需要的東西(無論是一個框架還是純粹的自定義代碼)。如果您在Linux系統上或在Windows上的事件查看器中進行搜索,則可以只想要清楚所需的內容。這真的取決於你的具體需求是什麼。

+0

感謝您的回覆,我會看看自定義錯誤處理程序。 –