首頁  >  文章  >  Java  >  在Java下利用log4j記錄日誌的方法

在Java下利用log4j記錄日誌的方法

高洛峰
高洛峰原創
2017-01-18 11:54:231847瀏覽

1、前言

log4j是一個用Java編寫的可靠,快速且靈活的日誌框架(API),它在Apache軟體許可下發布。 Log4j已經移植到了C,C++,C#,Perl,Python和Ruby等語言。

Log4j是高度可配置的,並可透過在運行時的外部檔案進行配置。它根據記錄的優先級別,並提供機制,以指示記錄資訊到許多的目的地,例如:資料庫,文件,控制台,UNIX系統日誌等。

Log4j中有三個主要組成部分:

    loggers: 負責擷取記錄資訊。

    appenders : 負責發布日誌訊息,以不同的首選目的地。

    layouts: 負責格式化不同風格的日誌資訊。

注意:本文是基於log4j 2.X以上版本。

2、安裝

    log4j-core-xx.jar

    log4j-api-xx.jar

   log4j-api-xx.jar

    log4j-web-web日誌的類別添加如下引用:

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
static Logger logger = LogManager.getLogger(Test.class.getName());

設定檔位置位於:src根目錄下,即使沒有設定檔的話也不會報錯,預設以console的形式進行輸出。

log4j2設定檔與log4(1.X版本的有很大不同),只能採用.xml、.json或.jsn格式,具體設定如下(${web:rootDir} 表示web根目錄):

<?xml version="1.0" encoding="UTF-8"?>
 
<configuration status="error">
 <!--先定义所有的appender-->
 <appenders>
  <!--这个输出控制台的配置-->
  <Console name="Console" target="SYSTEM_OUT">
   <!--这个是输出日志的格式-->
   <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
  </Console>
  <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,适合临时测试用-->
  <File name="Error" fileName="${web:rootDir}/logs/error.log" append="false">
   <!--文件只记录level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
   <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
   <PatternLayout charset="UTF-8" pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
  </File>
 
  <!--这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
  <RollingFile name="RollingFile" fileName="${web:rootDir}/logs/history.log"
      filePattern="log/$${date:yyyy-MM}/history-%d{MM-dd-yyyy}-%i.log.gz">
   <PatternLayout charset="UTF-8" pattern="%d{yyyy-MM-dd &#39;at&#39; HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
   <SizeBasedTriggeringPolicy size="50MB"/>
  </RollingFile>
 </appenders>
 <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
 <loggers>
  <!--建立一个默认的root的logger-->
  <root level="trace">
   <appender-ref ref="Error"/>
   <appender-ref ref="RollingFile"/>
   <appender-ref ref="Console"/>
  </root>
 </loggers>
</configuration>

4、普通專案和web專案

對於普通專案來講,進行以上配置完成後即可以正常使用,對於web專案來講,是不會產生日誌檔案的。需要在web.xml裡面根節點下加入如下配置:

<!-- log4j2.x start -->
<listener>
 <listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
</listener>
<filter>
 <filter-name>log4jServletFilter</filter-name>
 <filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class>
</filter>
<filter-mapping>
 <filter-name>log4jServletFilter</filter-name>
 <url-pattern>/*</url-pattern>
</filter-mapping>
<!-- log4j2.x end -->

總結

以上就是在Java下利用log4j記錄日誌的方法,希望這篇文章的內容對大家的學習或工作能帶來一定的幫助,如果有疑問大家可以留言交流。謝謝大家對PHP中文網的支持。

更多在Java下利用log4j記錄日誌的方法相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn