デバッグし易くしよう!(おまけ) testLog Class をサンプルコードに適用した例
前回のデバッグ用Class testLogをサンプルコードに組み込んでみた例です。
開発時、運用時などの状況により、表示の有無、出力範囲の制御を次の二つの定義を組み合わせで制御できます。
//DEBUG処理の切り替え 本番運用時にはFALSEに変更すること
define('DEBUG', TRUE); //デバッグ時
//define('DEBUG', FALSE); //本番運用時
testLog::setdispLogF( TRUE ); // ログを画面表示するか? TRUE/FALSE
また、メインプログラム側で、ログファイル名に日付を加え、日付ごとにログファイルが分かれるようにしています。
//ログ処理準備
$Kyou=date("Ymd",time());$logDir='./log/'; //ログディレクトリ
$logFname=$logDir.'test_syori_log'.$Kyou.'.txt';//ログファイル名
require_once("test_log.php"); //test class
testLog::setLogfile($logFname); //ログファイル名の指定
<pre> <?php //DEBUG処理の切り替え 本番運用時にはFALSEに変更すること define('DEBUG', TRUE); //デバッグ時 //define('DEBUG', FALSE); //本番運用時 //エラー表示レベル制御 デバッグ時:E_ALL, 本番運用時:0 if(DEBUG) { error_reporting(E_ALL); } else{ error_reporting(0); } //ログ処理準備 $Kyou=date("Ymd",time()); $prognameDesc ='test_program_fopen'; $logDir='./log/'; //ログディレクトリ $logFname=$logDir.'test_syori_log'.$Kyou.'.txt';//ログファイル名 require_once("test_log.php"); //test class testLog::setLogfile($logFname); //ログファイル名の指定 testLog::setProgname( $prognameDesc ); // プログラム名 testLog::setdispLogF( TRUE ); // ログを画面表示するか? TRUE/FALSE testLog::save_msg('処理スタート['.$prognameDesc.']','['.__FILE__.']'); //ユーザー名、パスワード $username='Twitterユーザ‐名'; $password='Twitterパスワード'; if (DEBUG) testLog::save_msg('ユーザー名パスワード','username=['.$username.']'); $message='Twitter投稿テストのメッセージ!!'; if (DEBUG) testLog::save_msg('投稿メッセージをセット完了','['.$message.']'); $ret= tweet_fop($message, $username, $password); testLog::save_msg('処理終了','================================='); testLog::keikazikanLog(); exit(); //処理終了 EXIT! //fopenを利用したtweet function function tweet_fop($message, $username, $password) { testLog::save_msg('関数tweet_fop:START','================================='); $url = "http://twitter.com/statuses/update.json?"; $params = "status=". rawurlencode($message); $st = stream_context_create(array( "http" => array( "method" => "POST", "header" => "Authorization: Basic ". base64_encode($username. ":". $password) ) )); testLog::save_msg('fopen実行','url=['.$url.']'); if(($fp = fopen($url.$params, 'r', false, $st)) == false){ testLog::save_msg('fopen 失敗のため 関数tweet_fopから戻る'); return(false); } testLog::save_msg('fopen 成功'); if (DEBUG) testLog::save_msg('stream_get_contents実行'); $contents=stream_get_contents($fp); testLog::save_msg('fclose実行'); fclose($fp); testLog::save_msg('関数tweet_fop:END ','================================='); return ($contents); } ?> </pre>