首頁  >  文章  >  後端開發  >  log4php的配置及使用

log4php的配置及使用

炎欲天舞
炎欲天舞原創
2017-08-04 10:17:093359瀏覽

log4php的使用

首先引入logger.php檔案。 log4php可以透過引入logger.php來完成自動載入的過程。檔案位置如下:

log4php的配置及使用

日誌記錄器本身沒有定義日誌的輸出目的地和格式,所以我們通常需要引入log4php後要先引入設定檔(下面會詳細介紹)。日誌記錄器是一個元件,我們透過日誌記錄器來記錄日誌資訊。引入設定檔後透過getLogger獲得一個將日誌記錄器實體。然後可以透過列印方法列印出日誌資訊。列印方法通常包括info、warn、error、debug等。

include('Logger.php');
Logger::Configure(COMMON_PATH . 'Conf/log.php');//引入配置文件
$logger = Logger::getLogger("main"); //生成日志实例
$logger->info("This is an informational message."); //在规定好的输出目的地用规定好的输出格式显示信息消息

log4php設定

log4php設定檔支援 XML、PHP、Properties (INI)等格式。同樣支援可編程配置,即透過函數來改變配置。

class MyConfigurator implements LoggerConfigurator {
    
    public function configure(LoggerHierarchy $hierarchy, $input = null) {
 
        // Create an appender which logs to file
        $appFile = new LoggerAppenderFile('foo');
        $appFile->setFile('D:/Temp/log.txt');
        $appFile->setAppend(true);
        $appFile->setThreshold('all');
        $appFile->activateOptions();
        
        // Use a different layout for the next appender
        $layout = new LoggerLayoutPattern();
        $layout->setConversionPattern("%date %logger %msg%newline");
        $layout->activateOptions();
        
        // Create an appender which echoes log events, using a custom layout
        // and with the threshold set to INFO 
        $appEcho = new LoggerAppenderEcho('bar');
        $appEcho->setLayout($layout);
        $appEcho->setThreshold('info');
        $appEcho->activateOptions();
        // Add both appenders to the root logger
        $root = $hierarchy->getRootLogger();
        $root->addAppender($appFile);
        $root->addAppender($appEcho);
    }
}
        Logger::Configure(COMMON_PATH . 'Conf/log.php');

專案中由這行程式碼引入配置。配置中一般包含以下內容:

1.日誌資訊的優先順序;2. 日誌資訊的輸出目的地;3. 日誌資訊的輸出格式。

一. log4php 日誌資訊優先權

日誌資訊的優先權從高到低有ERROR、WARN、INFO、DEBUG。

以下是常用四種等級的用法:
DEBUG Level指出細粒度資訊事件對偵錯應用程式是非常有幫助的。
INFO level表明 訊息在粗粒度等級上突出強調應用程式的運行過程。
WARN level表示會出現潛在錯誤的情況。
ERROR level指出雖然發生錯誤事件,但仍不影響系統的繼續運作。

程式只能顯示比目前設定的等級優先順序更低的資訊。例如目前程式設定level為DEBUG,那就是說程式中所有資訊都能顯示出來。如果目前程式level為info,那麼只有info,warn,error三中日誌資訊可以展示。

    return array(
    'rootLogger' => array(
        'appenders' => array(
            'myConsoleAppender',
        ),
        'level' => 'DEBUG'
    ),
    )

二.輸出位址配置

和優先權一樣,輸出位址同樣可以在設定檔中作出配置,並且可以根據不同的日誌類別設定不同的輸出目的地。例:

'loginFileAppender' => [
            'class' => 'LoggerAppenderDailyFile',
            'layout' => [
                'class' => 'LoggerLayoutPattern',
                'params' => [
                    'conversionPattern' => '%date [%logger] %message%newline',
                ],
            ],
            'params' => [
                'file' => './log/login/login_%s.log',
                'datePattern' => 'Y_m_d',
            ]
        ],

log4php支援12種輸出目的地,分別為:

  • LoggerAppenderConsole 以php://stdout為輸出目的地

  • LoggerAppenderFile 以檔案為輸出目的地

  • LoggerAppenderDailyFile 以檔案為目的地,每日輸出一個檔案

  • #LoggerAppenderDb 以資料庫為輸出目的地

  • LoggerAppenderEcho 在執行檔案尾輸出

  • ##LoggerAppenderMail 以郵件為輸出地

  • LoggerAppenderMailEvent 以郵件為輸出地, 為事件觸發

  • LoggerAppenderNull 不輸出任何資訊

  • LoggerAppenderPhp LoggerAppenderPhp輸出至PHP錯誤訊息,將各類別日誌等級資訊轉換為php標準資訊

  • LoggerAppenderRollingFile 以xxx.log.1, xxx.log.2的形式輸出

  • LoggerAppenderSocket 以socket方式輸出

  • LoggerAppenderSyslog 以系統日誌為目的地輸出,並使用php中的syslog()函數進行記錄

#程式碼中便是規定了以每日輸出一個檔案作為輸出目的地,用來記錄登入類型的日誌資訊。

三.日誌檔案輸出格式

它作為輸出目的地的一個屬性存在,log4php上包含5種不同的輸出方式,分別為:

  • LoggerLayoutHtml 以html格式輸出調試資訊

  • LoggerLayoutSimple 簡單的以"等級資訊- 日誌資訊"的格式顯示

  • LoggerLayoutTTCC 以"月/日/年時間[流程] 等級資訊日誌名稱- 偵錯資訊"的格式來顯示

  • LoggerLayoutPattern 以模式表達式作為輸出格式來顯示(這個模式可以自訂輸出格式)

  • LoggerXmlLayout//以xml的模式來輸出

LoggerLayoutPattern 模式的一些格式參數

LoggerLayoutPattern為我們提供了自訂日誌資訊格式的方法,專案中也常常使用該模式來自訂日誌資訊。在實際使用中,我們透過配置conversionPattern參數來定義模式。而參數變數中通常會使用一些log4php提供的轉換說明符來配置。

例如:

'conversionPattern' => '%date [%logger] %message%newline'

格式為: yyyy-mm-ddThh:mm:ss+08:00.[日誌類型].日誌內容.換行。

常用的轉換說明符有:

  • %logger(%lo,%c)請求日誌的日誌記錄器的名稱。

  • %data($d)時間。預設為ISO8601格式。可以透過%data{(格式)}改變格式。

  • %location(%l)呼叫者的位置資訊

  • #%message(%m %msg)日誌的內容

  • %n(%newline)換行

  • %level(%p)目前日誌事件的優先順序

  • #

以上是log4php的配置及使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn