log4j(七)——log4j.xml簡單配置樣例說明

一:測試環境與log4j(一)——爲何要使用log4j?同樣,這裏再也不重述html

 

二:老規矩,先來個栗子,而後再聊聊感覺java

(1)這裏栗子有一點特別呀!給出了包名唉!想必有用,是的,配置文件中要特別說明一下的apache

package test.log4j.test8;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;

/**
 * Created by godtrue
 */
public class UseLog4j {
    //日誌記錄器
    private static Logger LOGGER = LogManager.getLogger(UseLog4j.class);
    //程序入口——主函數
    public static void main(String[]args) {
        //讀取使用Java的特性文件編寫的配置文件
        DOMConfigurator.configure( "D:\\workspace_test\\hello-log4j\\log4j.xml" );
        //輸出日誌信息,測試日誌級別的做用(配置在配置文件中),僅僅輸出大於等於目前有效級別的日誌信息
        LOGGER.debug("[1]-my level is DEBUG 天");
        LOGGER.info("[2]-my level is INFO");
        LOGGER.warn("[3]-my level is WARN");
        LOGGER.error("[4]-my level is ERROR");
    }
}

(2)這段代碼和(1)除了類名多了一個 _ ,並無什麼區別,那有什麼用那?恩,有用的,一切爲了測試,不信,你本身試試就更清楚了編程

package test.log4j.test8;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;

/**
 * Created by godtrue
 */
public class UseLog4j_ {
    //日誌記錄器
    private static Logger LOGGER = LogManager.getLogger(UseLog4j_.class);
    //程序入口——主函數
    public static void main(String[]args) {
        //讀取使用Java的特性文件編寫的配置文件
        DOMConfigurator.configure( "D:\\workspace_test\\hello-log4j\\log4j.xml" );
        //輸出日誌信息,測試日誌級別的做用(配置在配置文件中),僅僅輸出大於等於目前有效級別的日誌信息
        LOGGER.debug("[1]-my level is DEBUG 天");
        LOGGER.info("[2]-my level is INFO");
        LOGGER.warn("[3]-my level is WARN");
        LOGGER.error("[4]-my level is ERROR");
    }
}

(3)以下的配置文件,僅列出了三種文件輸出目的地的配置,他們相對比較經常使用,其中值得特別注意的是記錄器的 name 和 additivity 這兩個屬性的做用,詳情往下看註解,最好本身試試app

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration>

    <!-- 將日誌信息輸出到控制檯 -->
    <appender name="ConsoleAppender" class="org.apache.log4j.ConsoleAppender">
        <!-- 設置日誌輸出的樣式 -->
        <layout class="org.apache.log4j.PatternLayout">
            <!-- 設置日誌輸出的格式 -->
            <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n" />
        </layout>
        <!--過濾器設置輸出的級別-->
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <!-- 設置日誌輸出的最小級別 -->
            <param name="levelMin" value="WARN" />
            <!-- 設置日誌輸出的最大級別 -->
            <param name="levelMax" value="ERROR" />
            <!-- 設置日誌輸出的xxx,默認是false -->
            <param name="AcceptOnMatch" value="true" />
        </filter>
    </appender>

    <!-- 將日誌信息輸出到文件,可是當文件的大小達到某個閾值的時候,日誌文件會自動回滾 -->
    <appender name="RollingFileAppender" class="org.apache.log4j.RollingFileAppender">
        <!-- 設置日誌信息輸出文件全路徑名 -->
        <param name="File" value="D:/log4j/RollingFileAppender.log" />
        <!-- 設置是否在從新啓動服務時,在原有日誌的基礎添加新日誌 -->
        <param name="Append" value="true" />
        <!-- 設置保存備份回滾日誌的最大個數 -->
        <param name="MaxBackupIndex" value="10" />
        <!-- 設置當日志文件達到此閾值的時候自動回滾,單位能夠是KB,MB,GB,默認單位是KB -->
        <param name="MaxFileSize" value="10KB" />
        <!-- 設置日誌輸出的樣式 -->
        <layout class="org.apache.log4j.PatternLayout">
            <!-- 設置日誌輸出的格式 -->
            <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n" />
        </layout>
    </appender>

    <!-- 將日誌信息輸出到文件,能夠配置多久產生一個新的日誌信息文件 -->
    <appender name="DailyRollingFileAppender" class="org.apache.log4j.DailyRollingFileAppender">
        <!-- 設置日誌信息輸出文件全路徑名 -->
        <param name="File" value="D:/log4j/DailyRollingFileAppender.log" />
        <!-- 設置日誌每分鐘回滾一次,即產生一個新的日誌文件 -->
        <param name="DatePattern" value="'.'yyyy-MM-dd-HH-mm'.log'" />
        <!-- 設置日誌輸出的樣式 -->
        <layout class="org.apache.log4j.PatternLayout">
            <!-- 設置日誌輸出的格式 -->
            <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n" />
        </layout>
    </appender>


    <!--
     注意:
     1:當additivity="false"時,root中的配置就失靈了,不遵循缺省的繼承機制
     2:logger中的name很是重要,它表明記錄器的包的形式,有必定的包含關係,試驗代表
        2-1:當定義的logger的name同名時,只有最後的那一個才能正確的打印日誌
        2-2:當對應的logger含有包含關係時,好比:name=test.log4j.test8 和 name=test.log4j.test8.UseLog4j,則2-1的狀況是同樣的
2-3:logger的name表示全部的包含在此名的全部記錄器都遵循一樣的配置,name的值中的包含關係是指記錄器的名稱喲!注意啦! 3:logger中定義的level和appender中的filter定義的level的區間取交集 4:若是appender中的filter定義的 levelMin > levelMax ,則打印不出日誌信息
--> <!-- 指定logger的設置,additivity指示是否遵循缺省的繼承機制--> <logger name="test.log4j.test8.UseLog4j" additivity="false"> <level value ="WARN"/> <appender-ref ref="DailyRollingFileAppender"/> </logger> <!--指定logger的設置,additivity指示是否遵循缺省的繼承機制 --> <logger name="test.log4j.test8.UseLog4j_" additivity="false"> <level value ="ERROR"/> <appender-ref ref="RollingFileAppender"/> </logger> <!-- 根logger的設置--> <root> <level value ="INFO"/> <appender-ref ref="ConsoleAppender"/> <!--<appender-ref ref="DailyRollingFileAppender"/>--> </root> </log4j:configuration>

三:感覺框架

      1)咱們如今實際的項目使用的是log4j2,相應的配置方式和這裏有所不一樣,抽時間我再好好玩一下函數

      2)若是整個log4j日誌框架,按照比較平滑的學習曲線來學習的話,仍是很是簡單的,之前學習過,不過不作筆記就是學習一下,時間一長容易忘記各項配置都是幹啥的,因此,在裏再補上一筆,寫博客的好處就體現出來了,等忘記了回頭再看看,也許記憶就恢復了,謝謝博客園提供的遊戲場所。——世界是個遊樂場,咱們都是上帝的孩子。post

      3)編程這一行,我以爲應該重複的造輪子,特別是在學習某項技術的時候,網上關於log4j的博文也挺多的,剛開始我也找了一些來看,不過發現很差玩,不是本身的東西理解起來費勁不說,好多一實驗還不靈,固然,有好多也是至關不錯的,是通過試驗的,不過不夠詳細。總之,好的要學習,而學習的最好途徑仍是本身多思考,多動手試驗試驗。學習

 

四:寫這些博客我曾詳細的看過一下資源(很是感謝,在此謝過!)測試

log4j官網

log4j教程

使用Log4j進行日誌操做

最詳細的Log4j使用教程

log4j百度百科

log4j維基百科

log4j詳解與實戰

log4j配置文件詳解

log4j.properties配置詳解與實例-所有測試經過

log4j.properties配置文件詳解

log4j.xml配置文件詳解

log4.xmlj配置文件詳解

相關文章
相關標籤/搜索