Log4j與Logback

一.Log4j簡介:html

  1.Log4j(log for java)java

    01.是apache的一個開源項目apache

    02.是使用java語言編寫的一個日誌框架api

    03.用於記錄程序中的日誌信息app

    04.能夠將日誌信息輸出到控制檯,文件等目的地框架

    (咱們日常看到的那些以.log結尾的文件,就是日誌文件)spa

  2.log4j的做用:線程

    1.記錄代碼中變量的變化狀況,易於咱們的代碼調試和後期維護debug

    2.週期性的保存一些數據到文件中,以便於後續使用調試

    3.能夠設置日誌信息的級別,便於管理

 

二.log4j的經常使用配置

  1.log4j的日誌組成部分

    01.日誌記錄器(logger)

      OFF:級別最高,用於關閉全部的日誌記錄

      FATAL:嚴重的錯誤事件將會致使應用程序到退出

      ERROR:錯誤事件,但仍然不影響席同德繼續運行

      WARN:會出現潛在的錯誤信息

      INFO:消息在粗粒度級別上突出強調應用程序的運行過程

      DEBUG:細粒度信息事件對調試應用程序很是有幫助

      TRACE:細粒度比DEBUG更低的信息事件

      ALL:級別最低,用於開啓全部的日誌記錄

      (生產環境時:建議吧DEBUG日誌級別換成WARN,避免產生大量文件)

    02.日誌的輸出格式

      %p : 日誌信息的優先級

      %d : 日誌的輸出時間 好比

      %d{yyyy-MM-dd hh:mm:ss}

      %C : 輸出日誌信息的全類名

      %l : 日誌輸出的位置,包含類名,線程和日誌輸出的行號

      %m : 日誌輸出的信息

      %M : 日誌輸入所在的方法

      %n : 換行 %r : 從程序啓動到輸出日誌信息,經歷的時間(毫秒)

      %t : 輸出日誌信息的線程

    03.日誌的輸出目的地

      01.指定日誌信息輸出到哪一個地方

      02.能夠同時指定多個輸出目的地

      03.一個輸出目的地就是一個Appender ===》一個類

      例子: 將日誌信息輸出到console控制檯 =====》ConsoleAppender

      將日誌信息輸出到文件中 =====》RollingFileAppender DailyRollingFileAppender

      RollingFileAppender :按照文件的大小生成新文件

      DailyRollingFileAppender : 按照時間生成新文件

三.Log4j的使用:

  1.配置log4j.properties

  

//1.咱們須要實例化一個類
//2.ConsoleAppender console=new ConsoleAppender();//建立對象
//3.調用對象的屬性或者方法賦值  console.set 屬性
//4.log4j.appender   前綴 咱們通常不改變
log4j.appender.console=org.apache.log4j.ConsoleAppender
//console.Target=System.out    對象名.屬性名=輸出位置 
log4j.appender.console.Target=System.out
//實例化一個Layout對象 由於Layout是一個抽象類
//因此咱們實例化一個Layout的子類便可   設置輸出格式
log4j.appender.console.Layout=org.apache.log4j.PatternLayout
//%d 日期  %c  類class  %1  行號 line   %m錯誤信息  message   %n換行  newLine
log4j.appender.console.Layout.ConversionPattern=%d{yyyy-mm-dd  hh\:mm\:ss}  %c   %l    %m    %n

//使用log4j.rootLogger=級別,變量1,變量2...
//級別,必須位於第一個位置   變量1,變量2   位置能夠互換
log4j.rootLogger=debug.console
//把日誌信息打印在文件中,根據文件大小會建立新文件
log4j.appender.file=org.apache.log4j.RollingFileAppender
//文件的存放位置
log4j.appender.file.File=MaxFileSize=e\:/log/log4j..log
//每一個文件的最大容量
log4j.appender.file.MaxFileSize=1kb
//若是超過了大小,默認產生額外文件的數量
log4j.appender.fileMaxBackupIndex=3
//設置內容滿了 以後是否覆蓋以前的內容
log4j.appender.file.Append=true
log4j.appender.file.Layout=org.apache.log4j.PatternLayout
log4j.appender.file.%d{yyyy-mm-dd  hh\:mm\:ss}  %c   %l    %m    %n

//使用log4j.rootLogger=級別,變量1,變量2....設置日誌級別和輸出目的地
log4j.rootLogger=debug.file
//每分鐘生成一個新文件
log4j.appender.file2=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file2.Append=true
//DatePattern能夠指定6中時間方式,實現日誌記錄
log4j.appender.file2.DatePattern=yyyy-mm-dd-hh-mm'.log'
log4j.appender.file2.File=e\:/log/log4j..log
log4j.appender.file2.Threshold=debug
log4j.appender.file2.Layout=org.apache.log4j.PatternLayout
log4j.appender.file2.Layout.ConversionPattern=%d{yyyy-mm-dd  hh\:mm\:ss}  %c   %l    %m    %n

//設置日誌輸出級別
log4j.rootLogger=debug.file2

 

Logback的應用

    <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.2.3</version>
      <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-core -->
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-core</artifactId>
      <version>1.1.2</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-access -->
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-access</artifactId>
      <version>1.1.7</version>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.6.4</version>
    </dependency>



<?xml version="1.0" encoding="UTF-8"?>
<!--
scan:當此屬性設置爲true時,配置文件若是發生改變,將會被從新加載,默認值爲true。
scanPeriod:設置監測配置文件是否有修改的時間間隔,(通俗講:就是設置多長時間查看一下logback.xml文件有沒有被修改)若是沒有給出時間單位,
            默認單位是毫秒。當scan爲true時,此屬性生效。默認的時間間隔爲1分鐘。
debug:當此屬性設置爲true時,將打印出logback內部日誌信息,實時查看logback運行狀態。默認值爲false。
-->
<configuration scan="true" scanPeriod="60 seconds" debug="false">

    <!-- 整個logback.xml文件中只有四個主要的標籤:其一是根標籤configuration,其他是三個子標籤:appende,logger,root
      可是有人會疑問:那property和timestamp是作什麼的?答案是:這兩個標籤是用來爲以上提到的是三個子標籤訂義屬性和賦值的。例如:
      第一個property標籤中定義了一個USER_HOME屬性,其值是/logs,scope是這個屬性的做用範圍,scope="context"是指該屬性只能在本配置文件中使用。
      而timestamp定義了一個時間戳,也就是定義了一個時間格式,以供三個子標籤使用。
    -->
    <property name="USER_HOME" value="e:/logs" />
    <property scope="context" name="FILE_NAME" value="mylog-logback" />
    <timestamp key="byDay" datePattern="yyyy-MM-dd" />

    <!-- 第一個子標籤appender:
  name:標籤名,爲了讓其餘標籤調用的惟一標示,至關於html標籤中的id
  class:引用的類,今後類中能夠看出該appender標籤訂義的是日誌輸出的位置,也就是往哪裏輸出
  ch.qos.logback.core.ConsoleAppender能夠看出是往控制檯上輸出。
  encoder:該標籤中定義了日誌的輸出格式
-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度   %msg:日誌消息,%n是換行符
                  級別分別是:TRACE < DEBUG < INFO <WARN < ERROR
            -->
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n </pattern>
        </encoder>
    </appender>












    <!--
  class:今後類中能夠看出該appender標籤訂義的日誌輸出位置是回滾文件,也就是說:把日誌輸出到一個文件中,而且該文件能夠回滾,至於怎麼回滾請看下面的註釋
    -->
    <appender name="log_file"  class="ch.qos.logback.core.rolling.RollingFileAppender">

        <!--   定義了日誌文件的目錄結構和文件名:磁盤根目錄:/logs/mylog-logback.log
          注意了:該文件名是在日誌文件沒有觸發回滾要求時的文件名,也就是說如今的日誌文件尚未知足xxMB,
        一旦知足了就會按照rollingPolicy裏設置的屬性進行從新命名
        -->
        <file>${USER_HOME}/${FILE_NAME}.log</file>
        <!--  rollingPolicy:回滾策略
          fileNamePattern:標籤中定義的是日誌文件一旦知足5MB就從新命名成新文件的命名格式,
        其中minIndex和maxIndex分別對應的是知足5MB的日誌文件的命名序號(1~10)對應%i.log中的i值。
        如:mylog-logback-2016-07-12-1.log,mylog-logback-2016-07-12-2.log,mylog-logback-2016-07-12-3.log
        -->
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>${USER_HOME}/${byDay}/${FILE_NAME}-${byDay}-%i.log</fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>10</maxIndex>
        </rollingPolicy>
        <!-- 觸發策略:當日志文件知足5MB就會出發回滾策略-->
        <triggeringPolicy   class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>5MB</maxFileSize>
        </triggeringPolicy>
        <!--%-4relative 表示,將輸出從程序啓動到建立日誌記錄的時間 進行左對齊 且最小寬度爲4。-->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %-4relative [%thread] %-5level %logger{35} - %msg%n
            </pattern>
        </encoder>

    </appender>

    <!-- 設置哪一個目錄或者包,類使用哪一個日誌
    將com.xdf包下的全部類的日誌的打印,level是打印級別:debug,若是不設置level,它將繼承它的上級<root>的日誌級別「DEBUG」
    若是沒有設置addtivity,默認爲true,將此loger的打印信息向上級傳遞;
    若是沒有設置appender-ref,此loger自己不打印任何信息。
    -->
<!--    <logger name="com.xdf" level="debug" additivity="true">
        <appender-ref ref="console" />
    </logger>-->

    <root level="debug">
        <appender-ref ref="console" />
    </root>
</configuration>





    
相關文章
相關標籤/搜索