Log4j是Apache的一個開源項目,我們不去考究它的起源時間,但是據我了解,log4j 1已經不再更新了。
下面我就以列舉的方式來淺談log4j和log4j 2的不同之處。
一、配置文件類型
log4j是通過一個.properties的文件作為主配置文件的,而現在的log4j 2則已經棄用了這種方式,采用的是.xml,.json或者.jsn這種方式來做,可能這也是技術發展的一個必然性,畢竟properties文件的可閱讀性真的是有點差。
二、核心JAR包
(1)log4j只需要引入一個jar包即可,
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
資源鏈接:鏈接:https://pan.baidu.com/s/1o9wdAMA 密碼:rqhh
(2)log4j 2則是需要2個核心
<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.5</version> </dependency>
資源鏈接:鏈接:https://pan.baidu.com/s/1pNieE4z 密碼:o5qj
大家發現沒,log4j和log4j 2的包路徑是不同的,Apache為了區分,包路徑都更新了,這樣大家甚至可以在一個項目中使用2個版本的日志輸出哦!(不過我想你們沒有那么調皮吧,嘿嘿)
三、文件渲染
(1)log4j想要生效,我們需要在web.xml中進行配置
<!-- log4j配置begin --> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>classpath:log4j.properties</param-value> </context-param> <context-param> <param-name>log4jRefreshInterval</param-name> <param-value>60000</param-value> </context-param> <!-- log4j配置end -->
這段配置目的在於告訴工程去哪加載log4j的配置文件和定義一個掃描器,這樣可以隨心所欲的放置log4j配置文件。
(2)log4j2就比較簡單,以maven工程為例,我們只需要把log4j2.xml放到工程resource目錄下就行了。
大家記住一個細節點,是log4j2.xml,而不是log4j.xml,xml名字少個2都不行!!
四、Log調用
log4j和log4j2調用都是很簡單的。
(1)log4j
import org.apache.log4j.Logger; private final Logger LOGGER = Logger.getLogger(Test.class.getName());
(2)log4j2
import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; private static Logger logger = LogManager.getLogger(Test.class.getName());