spring mvc 引入log4日記記錄maven工程 slf4j和log4j輸出到控制台配合使用log4j不輸出到文件


https://blog.csdn.net/qq_27093465/article/details/62928590

 

使用slf4j的優點:

提供帶參數的日志輸出方法(SLF4J 1.7及以后版本)。 

日志級別

  1. OFF 為最高等級 關閉了日志信息
  2. FATAL 為可能導致應用中止的嚴重事件錯誤
  3. ERROR 為嚴重錯誤 主要是程序的錯誤
  4. WARN 為一般警告,比如session丟失
  5. INFO 為一般要顯示的信息,比如登錄登出
  6. DEBUG 為程序的調試信息
  7. TRACE 為比DEBUG更細粒度的事件信息
  8. ALL 為最低等級,將打開所有級別的日志

配置日志信息輸出目的地

  1. org.apache.log4j.ConsoleAppender(控制台)
  2. org.apache.log4j.FileAppender(文件)
  3. org.apache.log4j.DailyRollingFileAppender(每天產生一個日志文件)
  4. org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件)
  5. org.apache.log4j.WriterAppender(將日志信息以流格式發送到任意指定的地方) 

配置日志信息的格式

  1. org.apache.log4j.HTMLLayout(以HTML表格形式布局),
  2. org.apache.log4j.PatternLayout(可以靈活地指定布局模式),
  3. org.apache.log4j.SimpleLayout(包含日志信息的級別和信息字符串),
  4. org.apache.log4j.TTCCLayout(包含日志產生的時間、線程、類別等等信息)

日志信息格式中幾個符號所代表的含義: 

-X號: X信息輸出時左對齊;
%p: 輸出日志信息優先級,即DEBUG,INFO,WARN,ERROR,FATAL,
%d: 輸出日志時間點的日期或時間,默認格式為ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},輸出類似:2002年10月18日 22:10:28,921
%r: 輸出自應用啟動到輸出該log信息耗費的毫秒數
%c: 輸出日志信息所屬的類目,通常就是所在類的全名
%t: 輸出產生該日志事件的線程名
%l: 輸出日志事件的發生位置,相當於%C.%M(%F:%L)的組合,包括類目名、發生的線程,以及在代碼中的行數。舉例:Testlog4.main (TestLog4.java:10)
%x: 輸出和當前線程相關聯的NDC(嵌套診斷環境),尤其用到像java servlets這樣的多客戶多線程的應用中。
%%: 輸出一個"%"字符
%F: 輸出日志消息產生時所在的文件名稱
%L: 輸出代碼中的行號
%m: 輸出代碼中指定的消息,產生的日志具體信息
%n: 輸出一個回車換行符,Windows平台為"/r/n",Unix平台為"/n"輸出日志信息換行可以在%與模式字符之間加上修飾符來控制其最小寬度、最大寬度、和文本的對齊方式。如:

  • 1)%20c:指定輸出category的名稱,最小的寬度是20,如果category的名稱小於20的話,默認的情況下右對齊。
  • 2)%-20c:指定輸出category的名稱,最小的寬度是20,如果category的名稱小於20的話,"-"號指定左對齊。
  • 3)%.30c:指定輸出category的名稱,最大的寬度是30,如果category的名稱大於30的話,就會將左邊多出的字符截掉,但小於30的話也不會有空格。
  • 4)%20.30c:如果category的名稱小於20就補空格,並且右對齊,如果其名稱長於30字符,就從左邊較遠輸出的字符截掉。

使用辦法

pom中只需引入slf4j,然后maven會引入它所依賴的其它JAR包。

1.在pom文件中添加代碼

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>

 建立log4j的配置文件,假設只輸出到控制台

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//LOGGER"
"http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <!-- 輸出日志到控制台 ConsoleAppender -->
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout"> 
            <param name="ConversionPattern" 
       value="%p:%d{dd HH:mm:ss,SSS\}ms- [%c{1}]%L行-%m%n" /> 
        </layout> 
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMin" value="INFO"/>
            <param name="LevelMax" value="INFO"/>
        </filter>
        <!-- 
        <filter class="org.apache.log4j.varia.LevelMatchFilter">
        <param name="LevelToMatch" value="INFO" /> 
        </filter> 
        -->
        <filter class="org.apache.log4j.varia.StringMatchFilter"> 
            <param name="StringToMatch" value="Configkeeper" /> 
            <param name="AcceptOnMatch" value="false" /> 
        </filter> 
    </appender>
    <root>
        <level value="INFO"/> 
        <appender-ref ref="console" />
    </root> 
</log4j:configuration>

 

 

3.在web.xml中配置log4j

 

  
     <!-- 配置log4j配置文件路徑 -->
    <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>WEB-INF/config/log4jConfig.xml</param-value>
    </context-param>
    <!-- 配置Log4j監聽器 -->
    <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
    </listener>

 

 如果在某個Controller或者Model或者Service或者Dao中輸出日志的時候需要引入

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory;

 

然后實例化,比如在controller中

 

 需要打印日志的地方

logger.info("當前狀態{}", "收到列表請求,並進入");

  運行效果 

當不需要使用log4j 用回java的loggin的時候,

在pom.xml中進行如下修改,重新部署即可

輸出風格又回來了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM