php SeasLog的使用

1 安裝SeasLog

https://pecl.php.net/package/SeasLog

wget https://pecl.php.net/get/SeasLog-2.2.0.tgz
tar -zxvf SeasLog-2.2.0.tgz 
 cd SeasLog-2.2.0
  /usr/local/php7.4/bin/phpize 
./configure --with-php-config=/usr/local/php7.4/bin/php-config
  make  && make install

然後修改php.ini文件 引入seaslog.so文件

如果需要額外配置,如下

[SeasLog]
;configuration for php SeasLog module
extension = seaslog.so

;默認log根目錄
seaslog.default_basepath = "/var/log/www"

;默認logger目錄
seaslog.default_logger = "default"

;日期格式配置 默認"Y-m-d H:i:s"
seaslog.default_datetime_format = "Y-m-d H:i:s"

;日誌格式模板 默認"%T | %L | %P | %Q | %t | %M"
seaslog.default_template = "%T | %L | %P | %Q | %t | %M"

;是否以目錄區分Logger 1是(默認) 0否
seaslog.disting_folder = 1

;是否以type分文件 1是 0否(默認)
seaslog.disting_type = 0

;是否每小時劃分一個文件 1是 0否(默認)
seaslog.disting_by_hour = 0

;是否啓用buffer 1是 0否(默認)
seaslog.use_buffer = 0

;buffer中緩衝數量 默認0(不使用buffer_size)
seaslog.buffer_size = 100

;cli運行時關閉buffer
;1是 0否(默認)
seaslog.buffer_disabled_in_cli = 0

;記錄日誌級別,數字越大,根據級別記的日誌越多。
;0-EMERGENCY 1-ALERT 2-CRITICAL 3-ERROR 4-WARNING 5-NOTICE 6-INFO 7-DEBUG 8-ALL
;默認8(所有日誌)
;
;   注意, 該配置項自1.7.0版本開始有變動。
;   在1.7.0版本之前, 該值數字越小,根據級別記的日誌越多: 
;   0-all 1-debug 2-info 3-notice 4-warning 5-error 6-critical 7-alert 8-emergency
;   1.7.0 之前的版本,該值默認爲0(所有日誌);
seaslog.level = 8

;日誌函數調用回溯層級
;影響預定義變量 %F 中的行數
;默認0
seaslog.recall_depth = 0

;自動記錄notice 默認0(關閉)
seaslog.trace_notice = 0

;自動記錄warning 默認0(關閉)
seaslog.trace_warning = 0

;自動記錄錯誤 默認1(開啓)
seaslog.trace_error = 1

;自動記錄異常信息 默認0(關閉)
seaslog.trace_exception = 0

;日誌存儲介質 1File 2TCP 3UDP (默認爲1)
seaslog.appender = 1

;寫入重試次數
;默認0(不重試)
seaslog.appender_retry = 0

;接收ip 默認127.0.0.1 (當使用TCP或UDP時必填)
seaslog.remote_host = "127.0.0.1"

;接收端口 默認514 (當使用TCP或UDP時必填)
seaslog.remote_port = 514

;接收端口的超時時間 默認1秒
seaslog.remote_timeout = 1

;過濾日誌中的回車和換行符 (默認爲0)
seaslog.trim_wrap = 0

;是否開啓拋出SeasLog自身異常  1開啓(默認) 0關閉
seaslog.throw_exception = 1

;是否開啓忽略SeasLog自身warning  1開啓(默認) 0關閉
seaslog.ignore_warning = 1

;是否開啓性能追蹤 1開啓 0關閉(默認)
seaslog.trace_performance = 0

;性能追蹤時的千分比採樣率
;默認10,即百分之一
seaslog.trace_performance_sample_rate = 10

;性能追蹤時的開始層級 默認從第1層開始
seaslog.trace_performance_start_depth = 1

;性能追蹤時深度層級 默認5層
seaslog.trace_performance_max_depth = 5

;性能追蹤時每層的函數最大數 按wall_time降序排列top 默認top5
seaslog.trace_performance_max_functions_per_depth = 5

;性能追蹤時當前請求執行時間的記錄閾值 只有當請求執行時間大於該值時,才記錄性能日誌 默認1000ms
seaslog.trace_performance_min_wall_time = 1000

;性能追蹤時每個方法執行時間的記錄閾值 只有當方法執行時間大於該值時,才參與計算 默認10ms
seaslog.trace_performance_min_function_wall_time = 10

在項目中使用

 <?php
 //phpinfo();
 echo SeasLog::getBasePath();
//輸出 /var/log/www
SeasLog::setBasePath(
'd:/tmp');
//輸出 d://tmp echo
"<br>";
SeasLog::setLogger('test');
//則會在d/tmp目錄下新建test文件夾
SeasLog::log('hah','xmz');
//如果設置了seaslog.disting_type = 1
則會在d/tmp/test文件夾下面生成 年月日.xmz.log文件

 

<?php
/**
 * @author [email protected]
 * Date: 14-1-27 下午4:47
 */
define('SEASLOG_ALL', 'ALL');
define('SEASLOG_DEBUG', 'DEBUG');
define('SEASLOG_INFO', 'INFO');
define('SEASLOG_NOTICE', 'NOTICE');
define('SEASLOG_WARNING', 'WARNING');
define('SEASLOG_ERROR', 'ERROR');
define('SEASLOG_CRITICAL', 'CRITICAL');
define('SEASLOG_ALERT', 'ALERT');
define('SEASLOG_EMERGENCY', 'EMERGENCY');
define('SEASLOG_DETAIL_ORDER_ASC', 1);
define('SEASLOG_DETAIL_ORDER_DESC', 2);
define('SEASLOG_CLOSE_LOGGER_STREAM_MOD_ALL', 1);
define('SEASLOG_CLOSE_LOGGER_STREAM_MOD_ASSIGN', 2);
define('SEASLOG_REQUEST_VARIABLE_DOMAIN_PORT', 1);
define('SEASLOG_REQUEST_VARIABLE_REQUEST_URI', 2);
define('SEASLOG_REQUEST_VARIABLE_REQUEST_METHOD', 3);
define('SEASLOG_REQUEST_VARIABLE_CLIENT_IP', 4);

class SeasLog
{
    public function __construct()
    {
        #SeasLog init
    }

    public function __destruct()
    {
        #SeasLog distroy
    }

    /**
     * 設置basePath
     *
     * @param $basePath
     *
     * @return bool
     */
    static public function setBasePath($basePath)
    {
        return true;
    }

    /**
     * 獲取basePath
     *
     * @return string
     */
    static public function getBasePath()
    {
        return 'the base_path';
    }

    /**
     * 設置本次請求標識
     *
     * @param string
     *
     * @return bool
     */
    static public function setRequestID($request_id)
    {
        return true;
    }

    /**
     * 獲取本次請求標識
     * @return string
     */
    static public function getRequestID()
    {
        return uniqid();
    }

    /**
     * 設置模塊目錄
     *
     * @param $module
     *
     * @return bool
     */
    static public function setLogger($module)
    {
        return true;
    }

    /**
     * 手動清除logger的stream流
     *
     * @param $model
     * @param $logger
     *
     * @return bool
     */
    static public function closeLoggerStream($model = SEASLOG_CLOSE_LOGGER_STREAM_MOD_ALL, $logger)
    {
        return true;
    }

    /**
     * 獲取最後一次設置的模塊目錄
     * @return string
     */
    static public function getLastLogger()
    {
        return 'the lastLogger';
    }

    /**
     * 設置DatetimeFormat配置
     *
     * @param $format
     *
     * @return bool
     */
    static public function setDatetimeFormat($format)
    {
        return true;
    }

    /**
     * 返回當前DatetimeFormat配置格式
     * @return string
     */
    static public function getDatetimeFormat()
    {
        return 'the datetimeFormat';
    }

    /**
     * 設置請求變量
     *
     * @param $key
     * @param $value
     *
     * @return bool
     */
    static public function setRequestVariable($key, $value)
    {
        return true;
    }

    /**
     * 獲取請求變量
     *
     * @param $key
     *
     * @return string
     */
    static public function getRequestVariable($key)
    {
        return '';
    }

    /**
     * 統計所有類型(或單個類型)行數
     *
     * @param string $level
     * @param string $log_path
     * @param null   $key_word
     *
     * @return array | long
     */
    static public function analyzerCount($level = 'all', $log_path = '*', $key_word = null)
    {
        return array();
    }

    /**
     * 以數組形式,快速取出某類型log的各行詳情
     *
     * @param        $level
     * @param string $log_path
     * @param null   $key_word
     * @param int    $start
     * @param int    $limit
     * @param        $order
     *
     * @return array
     */
    static public function analyzerDetail($level = SEASLOG_INFO, $log_path = '*', $key_word = null, $start = 1, $limit = 20, $order = SEASLOG_DETAIL_ORDER_ASC)
    {
        return array();
    }

    /**
     * 獲得當前日誌buffer中的內容
     *
     * @return array
     */
    static public function getBuffer()
    {
        return array();
    }
    
    /**
     * 獲取是否開啓buffer
     *
     * @return bool
     */
    static public function getBufferEnabled()
    {
        return true;
    }
    
    /**
    * 獲取當前buffer count
    *
    * @return int
    */
    static public function getBufferCount()
    {
        return 0;
    }

    /**
     * 將buffer中的日誌立刻刷到硬盤
     *
     * @return bool
     */
    static public function flushBuffer()
    {
        return true;
    }

    /**
     * 記錄debug日誌
     *
     * @param string|array $message
     * @param array        $context
     * @param string       $module
     */
    static public function debug($message, array $context = array(), $module = '')
    {
        #$level = SEASLOG_DEBUG
    }

    /**
     * 記錄info日誌
     *
     * @param string|array $message
     * @param array        $context
     * @param string       $module
     */
    static public function info($message, array $context = array(), $module = '')
    {
        #$level = SEASLOG_INFO
    }

    /**
     * 記錄notice日誌
     *
     * @param string|array $message
     * @param array        $context
     * @param string       $module
     */
    static public function notice($message, array $context = array(), $module = '')
    {
        #$level = SEASLOG_NOTICE
    }

    /**
     * 記錄warning日誌
     *
     * @param string|array $message
     * @param array        $context
     * @param string       $module
     */
    static public function warning($message, array $context = array(), $module = '')
    {
        #$level = SEASLOG_WARNING
    }

    /**
     * 記錄error日誌
     *
     * @param string|array $message
     * @param array        $context
     * @param string       $module
     */
    static public function error($message, array $context = array(), $module = '')
    {
        #$level = SEASLOG_ERROR
    }

    /**
     * 記錄critical日誌
     *
     * @param string|array $message
     * @param array        $context
     * @param string       $module
     */
    static public function critical($message, array $context = array(), $module = '')
    {
        #$level = SEASLOG_CRITICAL
    }

    /**
     * 記錄alert日誌
     *
     * @param string|array $message
     * @param array        $context
     * @param string       $module
     */
    static public function alert($message, array $context = array(), $module = '')
    {
        #$level = SEASLOG_ALERT
    }

    /**
     * 記錄emergency日誌
     *
     * @param string|array $message
     * @param array        $context
     * @param string       $module
     */
    static public function emergency($message, array $context = array(), $module = '')
    {
        #$level = SEASLOG_EMERGENCY
    }

    /**
     * 通用日誌方法
     *
     * @param              $level
     * @param string|array $message
     * @param array        $context
     * @param string       $module
     */
    static public function log($level, $message, array $context = array(), $module = '')
    {

    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章