簡體   English   中英

如何打印調試日志?

[英]How to print a debug log?

我想調試一些PHP代碼,但我想將日志打印到屏幕或文件對我來說很好。

我應該如何在PHP代碼中打印日志?

通常的print / printf似乎是HTML輸出,而不是控制台。

我有執行PHP代碼的Apache服務器。

一個鮮為人知的技巧是mod_php將stderr映射到Apache日志。 並且,有一個流,因此file_put_contents('php://stderr', print_r($foo, TRUE))會將$foo的值很好地轉儲到Apache錯誤日志中。

error_log(print_r($variable, TRUE)); 

可能有用

您可以使用error_log將錯誤日志文件(如果需要,也可以選擇其他文件)發送到服務器。

如果您使用的是Linux:

file_put_contents('your_log_file', 'your_content');

要么

error_log ('your_content', 3, 'your_log_file');

然后在控制台中

tail -f your_log_file

這將連續顯示文件中的最后一行。

您需要改變心態。 您正在編寫PHP,而不是用來編寫PHP的其他任何東西。 在控制台環境中無法在PHP中進行調試。

在PHP中,您有3類調試解決方案:

  1. 輸出到網頁(有關詳細信息,請參見dBug庫)。
  2. 寫入日志文件
  3. 使用xDebug進行會話調試

學習使用這些語言,而不是嘗試使PHP的行為像您習慣的其他語言一樣。

您在控制台上調試嗎? 有許多用於調試PHP的選項。 用於快速且骯臟的調試的最常用功能是var_dump

話雖這么說,但盡管var_dump很棒,而且很多人都這樣做,但是還有其他工具和技術可以使它變得更有趣。

如果要在網頁中進行調試,需要一些幫助,將<pre> </pre>標簽包裝在轉儲語句周圍,以便為數組和對象設置正確的格式。

即:

<div> some html code ....
      <a href="<?php $tpl->link;?>">some link to test</a>
</div>

      dump $tpl like this:

    <pre><?php var_dump($tpl); ?></pre>

最后,但並非最不重要的一點是,請確保是否將調試錯誤處理設置為顯示錯誤。 如果您無法訪問服務器配置,則可能需要在腳本頂部添加它。

error_reporting(E_ALL);
ini_set('display_errors', '1');

祝好運!

您也可以這樣寫文件:

$logFilePath = '../logs/debug.text';
ob_start();

// if you want to concatenate:
if (file_exists($logFilePath)) {
    include($logFilePath);
}
// for timestamp
$currentTime = date(DATE_RSS);

// echo log statement(s) here
echo "\n\n$currentTime - [log statement here]";

$logFile = fopen($logFilePath, 'w');
fwrite($logFile, ob_get_contents());
fclose($logFile);
ob_end_flush();

確保設置了正確的權限,以便php可以訪問和寫入文件( 775 )。

如果您不想集成Zend之類的框架,則可以使用trigger_error方法登錄到php錯誤日志。

簡單的方法是trigger_error:

 trigger_error("My error");

但您不能放置數組或對象,因此使用

var_dump

您可以使用php curl模塊來調用http://liveoutput.com/ 這在安全的公司環境中非常有用,在該公司環境中,php.ini中存在某些限制,這些限制限制了file_put_contents使用。

這是調試和記錄php的好工具: PHp調試器和記錄器

它僅需3行代碼即可直接使用。 它可以將消息發送到js控制台進行ajax調試,並且可以替換錯誤處理程序。 它還以更易讀的格式轉儲有關變量的信息,例如var_dump()和print_r()。 很好的工具!

我已經使用了許多方法,但是由於在開發時通常需要進行調試,並且由於我是在localhost上進行開發,因此我遵循了其他人的建議,現在將其寫入瀏覽器的JavaScript調試控制台(請參見http://www.codeforest。 net / debugging-php-in-browsers-javascript-console )。

這意味着我可以在瀏覽器中查看PHP生成的網頁,然后按F12鍵快速顯示/隱藏任何調試跟蹤。

由於我一直在尋找調試器,CSS布局等開發人員工具,因此在這里查看我的PHP loggon是有意義的。

如果有人決定向我們提供該代碼,則我做了一個小的更改。

function debug($name, $var = null, $type = LOG) {

我加了

$name = 'PHP: ' . $name;

這是因為我的服務器端PHP生成了包含JavaScript的HTML,我發現區分PHP和JS的輸出非常有用。

(注意:我目前正在對此進行更新,以允許我打開和關閉不同的輸出類型:從PHP,從JS和數據庫訪問)

我使用cakephp,所以我使用:

$this->log(YOUR_STRING_GOES_HERE, 'debug');

您可以使用:

<?php
echo '<script>console.log("debug log")</script>';
?>

您可以使用

<?php
{
    AddLog("anypage.php","reason",ERR_ERROR);
}
?>

或者,如果您想在日志中打印該語句,則可以使用

AddLog("anypage.php","string: ".$string,ERR_DEBUG_LOW);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM