PHP - ログ- まとめ?


クラウディア 


1. 概要
2. 基本
3. 変数の出力
4. トレース

1. 概要

 まとまるかは、わかりませんが、まとめたいと思います。  結局、「Laravel」のログも、「Laravel」自身のログが、バックトレース中心なので、自分で出力するものは、「error_log」で出力した方がいいかなと思います。

2. 基本

 ソースがどこにあるかは、よくわからないことが多いので、基本的には、下記のように出力します。

error_log(__DIR__);
error_log(basename(__FILE__).' '.__FUNCTION__.' '.__LINE__.' any_message'.PHP_EOL);
 とりあえず、通っているか、調べたいだけならば、下の行は。

error_log(basename(__FILE__).' '.__FUNCTION__.' '.__LINE__.' '.PHP_EOL);

3. 変数の出力

 変数が文字型だったり、「printable」であることがわかっている場合は。

error_log(__DIR__);
error_log(basename(__FILE__).' '.__FUNCTION__.' '.__LINE__.' $variable['. $variable .']'.PHP_EOL);
 てな感じで出力します。  変数の型が分からない場合は。

error_log(__DIR__);
error_log(basename(__FILE__).' '.__FUNCTION__.' '.__LINE__.' $variable['. print_r($variable, TRUE) .']'.PHP_EOL);
 が無難かな。  そもそも、変数が宣言されているかをチェックする場合は。

error_log(__DIR__);
if (isset($var))
{
	error_log(basename(__FILE__).' '.__FUNCTION__.' '.__LINE__.' $variable['. print_r($variable, TRUE) .']'.PHP_EOL);
}
else
{
	error_log(basename(__FILE__).' '.__FUNCTION__.' '.__LINE__.' $variable is not set '.PHP_EOL);
}

4. トレース


$trace = debug_backtrace();
foreach($trace as $line)
{
    error_log("{$line["file"]}: line {$line["line"]}");
}
error_log(PHP_EOL);