logback與log4j

 

logback和log4j是一我的寫的
java

springboot默認使用的日誌框架是logback。算法

logback主要由 logback-core:是其它模塊的基礎設施、其餘模塊基於它構建、提供了關鍵性的通用機制spring

                           logback-classic:是log4j的輕量級的實現,實現了簡單日誌門面slf4jsql

                           logback-access:主要做爲一個與servlet容器交互的模塊apache

配置文件結構logback.xml安全

                               

詳細配置文件內容:springboot

<configuration scan="true" scanPeriod="60 seconds" debug="false">
<property name="glmapper-name" value="glmapper-demo" />
<contextName>${glmapper-name}</contextName>
<appender> //xxxx </appender>
<logger> //xxxx </logger>
<root> //xxxx </root>
</configuration>
一、根節點< configuration>包含下面三個屬性:
scan:當此屬性設置位true時,配置文件若是發生改變,將會被從新加載,默認值爲true;
scanPeriod:設置監測配置文件是否有修改的時間間隔,若是沒有給出時間單位,默認單位是毫秒。當scan爲true時,此屬性生效,默認的時間間隔爲1分鐘。
debug:當此屬性設置爲true時,將打印出logback的內部日誌信息,實時查看logback運行狀態、默認值爲false。
<configuration scan="true" scanPeriod="60 seconds" debug="false"> 
      <!--其餘配置省略--> 
    </configuration>
二、子節點< contextName>:用來設置上下文名稱,每一個logger都關聯到logger上下文,默認上下文名稱爲default,但可使用<contentName>設置成其餘名字,用於區分不一樣應用程序的記錄。一旦修改,不能改變。
<configuration scan="true" scanPeriod="60 seconds" debug="false"> 
      <contextName>myAppName</contextName> 
<!--其餘配置省略--> 
    </configuration>
三、子節點< property>:用來定義變量值,它有兩個屬性name和value,經過<property>定義的值會被插入到logger上下文中,可使「${}」來使用變量。
name:變量的名稱,value:變量定義的值
<configuration scan="true" scanPeriod="60 seconds" debug="false"> 
      <property name="APP_Name" value="myAppName" /> 
      <contextName>${APP_Name}</contextName> 
      <!--其餘配置省略--> 
    </configuration>
四、子節點<timestamp>:獲取時間戳字符串,key和datapattern
key:標識此<timestamp>的名字
datepattern:設置將當前時間轉換爲字符串的模式,遵循java.txt.SimpleDateFormat的格式
<configuration scan="true" scanPeriod="60 seconds" debug="false"> 
      <timestamp key="bySecond" datePattern="yyyyMMdd'T'HHmmss"/> 
      <contextName>${bySecond}</contextName> 
      <!-- 其餘配置省略--> 
    </configuration>
五、子節點<appender>:負責寫日誌的組件,有兩個必要的屬性:name和class
name:指定appender名稱,class指定appender的全限定名
  5.一、ConsoleAppender把日誌輸出到控制檯:<encoder>:對日誌進行格式化,<target>:字符串System.out
<configuration> 
      <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
      <encoder> 
        <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern> 
      </encoder> 
      </appender> 

      <root level="DEBUG"> 
        <appender-ref ref="STDOUT" /> 
      </root> 
    </configuration>
5.二、FileAppender:把日誌添加到文件,
        file:被寫入的文件名,可使相對目錄,也能夠是絕對目錄,若是上級目錄不存在會自動建立,沒有默認值
        append:若是是true,日誌被追加到文件結尾,若是是false,清空現存文件,默認是true
        encoder:對記錄事件進行格式化
         prudent:若是是true,日誌會被安全寫入,默認是false。
onfiguration> 
      <appender name="FILE" class="ch.qos.logback.core.FileAppender"> 
        <file>testFile.log</file> 
        <append>true</append> 
        <encoder> 
          <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern> 
        </encoder> 
      </appender> 

      <root level="DEBUG"> 
      <appender-ref ref="FILE" /> 
      </root> 
    </configuration>
5.3RollingFileAppender:滾動記錄文件,先將日誌記錄到指定文件,當符合某個條件時,將日誌記錄到其餘文件,
            file:被寫入的文件名,可使相對目錄,也能夠是絕對目錄,若是上級目錄不存在自動建立
            append:若是是true,日誌被追加到文件結尾,若是是false,清空現存文件
           rollingPolicy:當發生滾動時,決定RollingFileAppender的行爲,涉及文件移動和重命名,
屬性class定義具體的滾動策略類
      class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy": 最經常使用的滾動策略,它根據時間來制定滾動策略,既負責滾動也負責出發滾動。有如下子節點:
        <fileNamePattern>:必要節點,包含文件名及「%d」轉換符,「%d」能夠包含一個java.text.SimpleDateFormat指定的時間格式,如:%d{yyyy-MM}。
若是直接使用 %d,默認格式是 yyyy-MM-dd。RollingFileAppender的file字節點無關緊要,經過設置file,能夠爲活動文件和歸檔文件指定不一樣位置,當前日誌老是記錄到file指定的文件(活動文件),活動文件的名字不會改變;
若是沒設置file,活動文件的名字會根據fileNamePattern 的值,每隔一段時間改變一次。「/」或者「\」會被當作目錄分隔符。
        <maxHistory>:
可選節點,控制保留的歸檔文件的最大數量,超出數量就刪除舊文件。假設設置每月滾動,且<maxHistory>是6,則只保存最近6個月的文件,刪除以前的舊文件。注意,刪除舊文件是,那些爲了歸檔而建立的目錄也會被刪除。

      class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy": 查看當前活動文件的大小,若是超過指定大小會告知RollingFileAppender 觸發當前活動文件滾動。只有一個節點:
        <maxFileSize>:這是活動文件的大小,默認值是10MB。
        <prudent>:當爲true時,不支持FixedWindowRollingPolicy。支持TimeBasedRollingPolicy,可是有兩個限制,1不支持也不容許文件壓縮,2不能設置file屬性,必須留空。

      <triggeringPolicy >: 告知 RollingFileAppender 合適激活滾動。
      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy" 根據固定窗口算法重命名文件的滾動策略。有如下子節點:
        <minIndex>:窗口索引最小值
        <maxIndex>:窗口索引最大值,當用戶指定的窗口過大時,會自動將窗口設置爲12。
        <fileNamePattern>:必須包含「%i」例如,假設最小值和最大值分別爲1和2,命名模式爲 mylog%i.log,會產生歸檔文件mylog1.log和mylog2.log。還能夠指定文件壓縮選項,例如,mylog%i.log.gz 或者 沒有log%i.log.zip
      例如:
        <configuration> 
          <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
              <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern> 
              <maxHistory>30</maxHistory> 
            </rollingPolicy> 
            <encoder> 
              <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern> 
            </encoder> 
          </appender> 

          <root level="DEBUG"> 
            <appender-ref ref="FILE" /> 
          </root> 
        </configuration>
        上述配置表示天天生成一個日誌文件,保存30天的日誌文件。
六、子節點loger:用來設置某一個包或具體的某一個類的日誌打印級別,以及指定<appender>,能夠包含零個或多個<appender-of>元素,標識這個appender將會添加到這個loger
     name:用來指定受此loger約束的某一個包或者具體的某一個類
     level:用來設置打印級別,大小寫無關:TRACE、DEBUG、INFO、WARN、ERROR、ALL和OFF
七、子節點root:是loger元素,但它是loger根,是全部loger的上級,只有一個level屬性,由於那麼name已經被命名爲root,且已是最上級了
level:用來設置打印級別,大小寫無關:TRACE、DEBUG、INFO、WARN、ERROR、ALL和OFF
經常使用的loger配置:

<!-- show parameters for hibernate sql 專爲 Hibernate 定製 -->
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" />
<logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG" />
<logger name="org.hibernate.SQL" level="DEBUG" />
<logger name="org.hibernate.engine.QueryParameters" level="DEBUG" />
<logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" />app

<!--myibatis log configure-->
<logger name="com.apache.ibatis" level="TRACE"/>
<logger name="java.sql.Connection" level="DEBUG"/>
<logger name="java.sql.Statement" level="DEBUG"/>
<logger name="java.sql.PreparedStatement" level="DEBUG"/>框架

logback取代log4j的理由:性能

一、更快的實現:logback的內核重寫了,不只性能提高了,初始化內存加載變小了。

二、很是充分的測試:logback的測試徹底不一樣級別的

三、logback-classic很是天然實現了SLF4j。

四、很是充分的文檔

五、logback-classic能自動從新加載配置文件

六、Lilith是log事件的觀察者,還能處理大量的log數據

七、謹慎的模式和很是友好的恢復

八、配置文件能夠處理不一樣的狀況

九、Filters須要診斷一個問題,須要打印出日誌

十、SiftingAppender:一個很是多功能的Appender:能夠用來分割日誌文件根據任何一個給定的運行參數。

十一、自動壓縮已經打出來的log

十二、堆棧樹帶有包版本

1三、自動去除舊的日誌文件

 

 

想要查看的更詳細,請點擊:https://blog.csdn.net/zbajie001/article/details/79596109

相關文章
相關標籤/搜索