php日誌記錄類

<?php
 php

class FileLog {sql

    const LOG_FILE_NAME = '%s_log_%s.log';
    const SINGLE_LOG_FILE_NAME = '%s_log.log';
    const LOG_CONTENT_FORMAT = '%s %s %s';
    static $LOG_FILE_PATH = '/home/logs/';
    static $flag_file_name = 'default';
    
    public static function init($flag){
        self::$flag_file_name = $flag;
        $basePath=config("baseConfig.basePath");
        self::$LOG_FILE_PATH = $basePath.'/logs/';
    }.net

    public static function logDt(){
        return date('Ymd');
    }命令行

    public static function logFileName($single=false){
        if ($single) {
            return sprintf(self::SINGLE_LOG_FILE_NAME,self::$flag_file_name);
        } else {
            return sprintf(self::LOG_FILE_NAME,self::$flag_file_name,self::logDt());
        }
    }
    /**
     * @param $log_type
     * @param $contents
     * @param bool|true $filter_numeric
     * emerg 嚴重錯誤,致使系統崩潰沒法使用
     * alert 警惕性錯誤, 必須被當即修改的錯誤
     * crit 臨界值錯誤, 超過臨界值的錯誤,例如一天24小時,而輸入的是25小時這樣
     * err 通常性錯誤
     * warn  警告性錯誤, 須要發出警告的錯誤
     * notice 通知,程序能夠運行可是還不夠完美的錯誤
     * info 信息,程序輸出信息
     * debug 調試,用於調試信息
     * sql SQL語句
     */
    public static function logs($log_type,$contents,$filter_numeric = true){
        $log_string = '';
        if(is_array($contents)){
            foreach($contents as $key => $value){
                if(empty($value)){
                    $value = '-';
                }
                if(is_numeric($key) && $filter_numeric){
                    $log_string .= ' ' . $value;
                } else {
                    $log_string .= ' ' . $key . ' ' . $value;
                }
            }
        } else {
            $log_string = $contents;
        }debug

        /*if($log_string[0] == ' '){
            $log_string = substr($log_string,1);
        }*/調試

        $content_date = date('H:i:s');ip

        if(isset($_SERVER['argv'])){  //zyc 修改 用於命令行
            $user_agent = '';
        }else{
            $user_agent = $_SERVER['HTTP_USER_AGENT'];
        }get

        $x_for_ip = '-';
        if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])){
            $x_for_ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
        }string

        $client_ip = '-';
        if(!empty($_SERVER["HTTP_CLIENT_IP"])){
            $x_for_ip = $_SERVER["HTTP_CLIENT_IP"];
        }it

        $ip = '-';
        if(!empty($_SERVER["REMOTE_ADDR"])){
            $ip = $_SERVER["REMOTE_ADDR"];
        }

        $log_content = sprintf(self::LOG_CONTENT_FORMAT,$content_date,$log_type,$log_string) . ' ' . $user_agent . ' ' . $x_for_ip . ' ' . $client_ip . ' ' . $ip . PHP_EOL;

        $file_name = self::$LOG_FILE_PATH . self::logFileName();

        @file_put_contents($file_name,$log_content,FILE_APPEND);

    }

    public static function SingleLog($log_type,$contents,$filter_numeric = true){
        $log_string = '';
        if(is_array($contents)){
            foreach($contents as $key => $value){
                if(empty($value)){
                    $value = '-';
                }
                if(is_numeric($key) && $filter_numeric){
                    $log_string .= ' ' . $value;
                } else {
                    $log_string .= ' ' . $key . ' ' . $value;
                }
            }
        } else {
            $log_string = $contents;
        }

        if($log_string[0] == ' '){
            $log_string = substr($log_string,1);
        }

        $content_date = date('H:i:s');
        $user_agent = $_SERVER['HTTP_USER_AGENT'];
        $x_for_ip = '-';
        if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])){
            $x_for_ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
        }

        $client_ip = '-';
        if(!empty($_SERVER["HTTP_CLIENT_IP"])){
            $x_for_ip = $_SERVER["HTTP_CLIENT_IP"];
        }

        $ip = '-';
        if(!empty($_SERVER["REMOTE_ADDR"])){
            $ip = $_SERVER["REMOTE_ADDR"];
        }

        $log_content = sprintf(self::LOG_CONTENT_FORMAT,$content_date,$log_type,$log_string) . ' ' . $user_agent . ' ' . $x_for_ip . ' ' . $client_ip . ' ' . $ip . PHP_EOL;

        $file_name = self::$LOG_FILE_PATH . self::logFileName(true);

        file_put_contents($file_name,$log_content,FILE_APPEND);

    }

}

相關文章
相關標籤/搜索