SeasLog学習ノート

10001 ワード

logログは、通常、システムまたはソフトウェア、アプリケーションの実行記録です.logの分析を通じて、ユーザーがシステムやソフトウェア、応用の運行状況を理解するのに便利である.もしあなたの応用logが十分に豊富であれば、従来のユーザーの操作行為、タイプの好み、地域分布、その他の情報を分析することもできます.1つのアプリケーションのlogが同時に複数のレベルに分かれている場合、そのアプリケーションの健康状況を簡単に分析し、問題をタイムリーに発見し、迅速に位置決めし、問題を解決し、損失を救済することができる.
php内蔵error_log、syslog関数は機能が強く、性能が優れているが、様々な欠陥(error_logはエラーレベルがなく、固定フォーマットがなく、syslogはモジュールを問わず、システムログと混合する)のため、柔軟性が大幅に低下し、応用ニーズを満たすことができない.
幸いなことに、log 4 php、plog、Analylogなどの第三者のlogクラスライブラリが上記の欠陥を補っていることが多い(もちろん、プロジェクトで自分で開発したlogクラスにも多くの応用がある).その中でlog 4 phpが最も有名で、設計が精良で、フォーマットが完璧で、ドキュメントが完備して、機能が強い.おすすめです.(log 4 phpの性能はテストする必要があります)
では、以下のニーズを満たすlogクラスライブラリはありますか.
  • モジュール、レベル
  • 構成が簡単(構成不要が望ましい)
  • ログ形式明瞭で読みやすい
  • 応用が簡単で、性能が素晴らしい
  • SeasLogはまさにこの需要に応じて生まれた.
    現在提供されているもの
  • PHPプロジェクトにおいて便利かつ規範的にlog
  • を記録する
  • 構成可能なデフォルトlogディレクトリとモジュール
  • logディレクトリの指定と現在の構成の取得
  • 初歩的な分析アラートフレームワーク
  • 効率的なログバッファ、便利なバッファdebug
  • PSR-3ログインタフェース仕様
  • に従う
    目標は何ですか
  • 便利で規範的なlog記録
  • 高効率の大量log分析
  • 構成可能、マルチパスのlogアラート
  • インストール
    コンパイルインストールseaslog
  • /path/to/phpize
  • $ . /configure   --with-php-config= /path/to/php-config
  • make   &&  make   install

  • seaslog.iniの構成
  • ; configuration  for   php SeasLog module
  • extension = seaslog.so
  • seaslog.default_basepath = /log/seaslog-test    ; log
  • seaslog.default_logger =  default                  ; logger
  • seaslog.disting_type = 1                        ; type  1  0 ( )
  • seaslog.disting_by_hour = 1                     ;  1  0 ( )
  • seaslog.use_buffer = 1                          ; buffer 1  0 ( )
  • seaslog.disting_type = 1 type , log info\warn\erro
    seaslog.disting_by_hour = 1
    seaslog.use_buffer = 1 buffer。 。 , , ( ) 。



    * SEASLOG_DEBUG                       "debug"
    * SEASLOG_INFO                        "info"
    * SEASLOG_NOTICE                      "notice"
    * SEASLOG_WARNING                     "warning"
    * SEASLOG_ERROR                       "error"
    * SEASLOG_CRITICAL                    "critical"
    * SEASLOG_ALERT                       "alert"
    * SEASLOG_EMERGENCY                   "emergency"
     
    var_dump(SEASLOG_DEBUG,SEASLOG_INFO,SEASLOG_NOTICE);
    /*
    string('debug') debug  
    string('info')  info  
    string('notice') notice  
    */

    SeasLog , 、 、 log。 , , :

    <?php
    /**
     * @author [email protected]
     * Date: 14-1-27   4:47
     */
     
     
    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 $module
         * @return bool
         */
        static public function setLogger($module)
        {
            return TRUE;
        }
     
     
        /**
         *              
         * @return string
         */
        static public function getLastLogger()
        {
            return 'the lastLogger';
        }
     
     
        /**
         *       (     )  
         * @param $level
         * @param string $log_path
         * @return array | long
         */
        static public function analyzerCount($level = 'all',$log_path = '*')
        {
            return array();
        }
     
     
        /**
         *      ,       log     
         * @param $level
         * @param string $log_path
         * @return array
         */
        static public function analyzerDetail($level = SEASLOG_INFO,$log_path = '*')
        {
            return array();
        }
     
     
        /**
         *       buffer    
         * @return array
         */
        static public function getBuffer()
        {
            return array();
        }
     
     
        /**
         *   debug  
         * @param $message
         * @param array $content
         * @param string $module
         */
        static public function debug($message,array $content = array(),$module = '')
        {
            #$level = SEASLOG_DEBUG
        }
     
     
        /**
         *   info  
         * @param $message
         * @param array $content
         * @param string $module
         */
        static public function info($message,array $content = array(),$module = '')
        {
            #$level = SEASLOG_INFO
        }
     
     
        /**
         *   notice  
         * @param $message
         * @param array $content
         * @param string $module
         */
        static public function notice($message,array $content = array(),$module = '')
        {
            #$level = SEASLOG_NOTICE
        }
     
     
        /**
         *   warning  
         * @param $message
         * @param array $content
         * @param string $module
         */
        static public function warning($message,array $content = array(),$module = '')
        {
            #$level = SEASLOG_WARNING
        }
     
     
        /**
         *   error  
         * @param $message
         * @param array $content
         * @param string $module
         */
        static public function error($message,array $content = array(),$module = '')
        {
            #$level = SEASLOG_ERROR
        }
     
     
        /**
         *   critical  
         * @param $message
         * @param array $content
         * @param string $module
         */
        static public function critical($message,array $content = array(),$module = '')
        {
            #$level = SEASLOG_CRITICAL
        }
     
     
        /**
         *   alert  
         * @param $message
         * @param array $content
         * @param string $module
         */
        static public function alert($message,array $content = array(),$module = '')
        {
            #$level = SEASLOG_ALERT
        }
     
     
        /**
         *   emergency  
         * @param $message
         * @param array $content
         * @param string $module
         */
        static public function emergency($message,array $content = array(),$module = '')
        {
            #$level = SEASLOG_EMERGENCY
        }
     
     
        /**
         *       
         * @param $level
         * @param $message
         * @param array $content
         * @param string $module
         */
        static public function log($level,$message,array $content = array(),$module = '')
        {
     
     
        }
    }

    SeasLog

    [base]
    wait_analyz_log_path = /log/base_test
     
     
    [fork]
    ;        1   0  
    fork_open = 1
     
     
    ;    
    fork_count = 3
     
     
    [warning]
    email[smtp_host] = smtp.163.com
    email[smtp_port] = 25
    email[subject_pre] =      -
    email[smtp_user] = [email protected]
    email[smtp_pwd] = seaslog#demo
    email[mail_from] = [email protected]
    email[mail_to] = [email protected]
    email[mail_cc] = [email protected]
    email[mail_bcc] =
     
     
    [analyz]
    ; enum
    ; SEASLOG_DEBUG      "debug"
    ; SEASLOG_INFO       "info"
    ; SEASLOG_NOTICE     "notice"
    ; SEASLOG_WARNING    "warning"
    ; SEASLOG_ERROR      "error"
    ; SEASLOG_CRITICAL   "critical"
    ; SEASLOG_ALERT      "alert"
    ; SEASLOG_EMERGENCY  "emergency"
     
     
    test1[module] = test/bb
    test1[level] = SEASLOG_ERROR
    test1[bar] = 1
    test1[mail_to] = [email protected]
     
     
    test2[module] = 222
    test2[level] = SEASLOG_WARNING
     
     
    test3[module] = 333
    test3[level] = SEASLOG_CRITICAL
     
     
    test4[module] = 444
    test4[level] = SEASLOG_EMERGENCY
     
     
    test5[module] = 555
    test5[level] = SEASLOG_DEBUG

    crontab

    ;    3   
    0 3 * * * /path/to/php /path/to/SeasLog/Analyzer/SeasLogAnalyzer.php

    Demo:

    <?php
    /**
     * @author [email protected]
     * Date: 14-1-27   4:41
     */
     
    echo '<pre>';
    var_dump(SEASLOG_TYPE_INFO,SEASLOG_TYPE_INFO_STR);
    var_dump(SEASLOG_TYPE_WARN,SEASLOG_TYPE_WARN_STR);
    var_dump(SEASLOG_TYPE_ERRO,SEASLOG_TYPE_ERRO_STR);
     
     
    var_dump(seaslog_get_basepath());
    var_dump(seaslog_get_lastlogger());
    var_dump(seaslog_get_basepath());
    var_dump(seaslog('test info'));
    var_dump(seaslog('test warning', SEASLOG_TYPE_WARN));
    var_dump(seaslog('test error', SEASLOG_TYPE_ERRO));
     
     
    var_dump(seaslog_set_basepath('/log/base_test'));
    var_dump(seaslog_set_logger('testModule/app1'));
    var_dump(seaslog('test info 2'));
    var_dump(seaslog('test warning 2', SEASLOG_TYPE_WARN));
    var_dump(seaslog('test error 2', SEASLOG_TYPE_ERRO));
    var_dump(seaslog_get_basepath());
    var_dump(seaslog_get_lastlogger());
    var_dump(seaslog_get_basepath());
     
    var_dump(seaslog('test error 3', SEASLOG_TYPE_ERRO, 'test/bb'));
     
    var_dump(seaslog_analyzer_count()); // == seaslog_analyzer_count(ALL_TYPE);
    var_dump(seaslog_analyzer_count(SEASLOG_TYPE_ERRO)); // == seaslog_analyzer_count(SEASLOG_TYPE_ERRO,'*')
    var_dump(seaslog_analyzer_count(SEASLOG_TYPE_ERRO,'20140211.log'));
     
     
    var_dump(seaslog_analyzer_detail(SEASLOG_TYPE_ERRO)); // == seaslog_analyzer_detail(SEASLOG_TYPE_ERRO,'*')
    var_dump(seaslog_analyzer_detail(SEASLOG_TYPE_ERRO,'20140211.log'));
     
     
    echo "
    ";