LINUX忘却録-リナックス(主にdebian)の覚書や、解説を書いています。
PHPで簡単なログを出力するときに、毎回日時をセットするのがめんどくさいので、日時を出力するログと出力する値をprintfのようにフォーマットしたいときに便利なincludeファイルを残しておきます。

使い方:
<?
    require_once( "logwrite.inc");
    loginit( "/var/log/test.log", "dateformat=datetime" );
    $a = 99;
    logwrite( "aのデータ = %05.5d", $a );
?>

出力結果
2008-11-11 02:22:11 :aのデータ = 00099

となります。

ファイル: logwrite.inc
<?

define( "LOG_NOOUT", "" );
define( "LOG_STDOUT", "stdout" );
$log_fname = "";
$log_option = "";
/**************************************************************
    option
        dateformat                datetime, date, time
**************************************************************/
function loginit( $fname, $option ){
    global $log_fname;
    global $log_option;
    $log_fname = $fname;
    if( $option != "" ){
        $opta = explode( ",", $option );
        for( $i=0;$i<count( $opta );$i++ ){
            $optd = trim( $opta[$i] );
            if( eregi( "^([^=]+)=(.*)$", $optd, $optr ) ){
                $log_option[$optr[1]] = $optr[2];
            }
        }
    }
}

function logwrite(){
    global $log_fname;
    global $log_option;

    $num = func_num_args();
    $arg = func_get_args();
    if( $num == 0 ) return 0;
   
    if( $log_fname != "" ){
        $fmt = $arg[0];
        $vap = array();
        if( $num > 1 ){
            for( $i=1;$i<$num;$i++ ){
                array_push( $vap, $arg[$i] );
            }
            $logstr = vsprintf( $fmt, $vap );
        }else{
            $logstr = $fmt;
        }
        if( $log_option["dateformat"] == "datetime" ){
            $dt = Date( "Y-m-d H:i:s" )." :";
        }else if( $log_option["dateformat"] == "date" ){
            $dt = Date( "Y-m-d" )." :";
        }else if( $log_option["dateformat"] == "time" ){
            $dt = Date( "H:i:s" )." :";
        }else{
            $dt = "";
        }
        if( $log_fname == LOG_STDOUT ){
            printf( "%s%s\n", $dt, $logstr );
        }else{
            $fp = fopen( $log_fname, "a" );
            fprintf( $fp, "%s%s\n", $dt, $logstr );
            fclose( $fp );
        }
    }
}
?>
フリーエリア
Copyright © LINUX忘却録 All Rights Reserved.