單獨使用Log4j2插件,不借助其它的jar,寫日誌信息

小白又來記錄心得了

對於小白來說,好難哇,控制檯輸出很簡單,但是想輸出到文件裏面,研究測試了好久。

使用依賴包:

    <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>2.11.1</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <version>2.11.1</version>
    </dependency>

初始化Log對象:

 private static org.apache.logging.log4j.Logger logger = org.apache.logging.log4j.LogManager.getLogger(MyLogHelper.class);

xml文件配置:

文件名爲log4j2.xml直接存放在資源文件夾resources下面

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">

    <properties>
        <property name="LOG_HOME">logs</property>
        <property name="LOG_BACKUP">backup</property>
        <property name="FILE_NAME">log</property>
    </properties>
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level - %msg%n"/>
        </Console>
        <!--name寫MyLogHelper爲自己封裝的類名-->
        <RollingFile name="MyLogHelper" fileName="${LOG_HOME}/${FILE_NAME}.log"
              filePattern="${LOG_HOME}/${LOG_BACKUP}/${FILE_NAME}-%d{yyyy-MM-dd}-%i.log"
              immediateFlush="true" append="true">
            <PatternLayout>
                <!--
                #pattern格式的簡單介紹:
                    #%d{HH:mm:ss.SSS} 表示輸出到毫秒的時間,如果不加大括號默認是到毫秒級別
                    #%r:程序啓動時間毫秒數
                    #%t:輸出日誌線程名稱
                    #%-5p:日誌級別,-5表示左對齊並且固定輸出5個字符,如果不足在右邊補空格
                    #%c:輸出日誌的logger實例名稱,取決於getLogger(String name)中的name屬性,即打印logger時的tag;大括號中的2表示顯示的層數。例如,對於name爲com.test.be.Main的logger,配置爲%c{2}顯示be.Main,配置爲%c{1}則顯示Main。
                    #%m:日誌內容描述
                    #%n:換行,一般和%m聯合使用:%m%n
                    #%l:語句所在的詳細位置, 包括類名、方法名、文件名、行號
                    #%L:行號,注意和上面小寫的區別,這個只有行號,不包含其他信息
                    #%F:所在的類文件名,如Main.java
                    #%M:所在方法名
                -->
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5p] %msg%n</pattern>
            </PatternLayout>
            <Policies>
                <!-- 每個日誌文件最大5MB 默認10M-->
                <SizeBasedTriggeringPolicy size="15MB" />
                <!--一天備份一個文件,配合filePattern使用-->
                <TimeBasedTriggeringPolicy interval="1"/>
            </Policies>

            <!--最多保存20個備份文件-->
            <DefaultRolloverStrategy max="20" />
        </RollingFile>
    </Appenders>
    <Loggers>
         <!-- com.tyyq.log爲自己封裝寫日誌類包路徑, MyLogHelper爲自己封裝的類名-->
        <logger name="com.tyyq.log" level="trace" additivity="true">
            <appender-ref ref="MyLogHelper" />
        </logger>
        <Root level="ERROR">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>
  MyLogHelper.error("我報錯拉!");
  MyLogHelper.warn("這是我的警告!");
  MyLogHelper.info("這是我說明哦.....");

 

發佈了70 篇原創文章 · 獲贊 7 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章