デバッグし易くしよう!(おまけ) 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>