zoukankan      html  css  js  c++  java
  • 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 neeke@php.net
     * 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 = '')
        {
    
        }
    }
  • 相关阅读:
    python并发编程之多进程
    python并发编程之多进程理论部分
    Python GIL(Global Interpreter Lock)
    python并发编程之多线程
    前端基础之CSS
    前端知识之HTML内容
    Python杂货铺-(1)os模块在python中执行shell命令
    Hive学习小记-(17)inline(array(struct))与explode
    Hive学习小记-(16)hive加载解析json文件
    Hive学习小记-(15)transform函数
  • 原文地址:https://www.cnblogs.com/aln0825/p/14890281.html
Copyright © 2011-2022 走看看