Spring 使用 Log4J 記錄日志

2022-05-16 16:04 更新

使用 Log4J 記錄日志

在 Spring 應(yīng)用程序中使用 Log4J 的功能是非常容易的。下面的例子將帶你通過簡單的步驟解釋 Log4J 和 Spring 之間的簡單集成。

假設(shè)你已經(jīng)在你的機(jī)器上安裝了 Log4J,如果你還沒有 Log4J,你可以從 http://logging.apache.org/ 中下載,并且僅僅在任何文件夾中提取壓縮文件。在我們的項(xiàng)目中,我們將只使用 log4j-x.y.z.jar

接下來,我們讓 Eclipse IDE 在恰當(dāng)?shù)奈恢霉ぷ?,遵循以下步驟,使用 Spring Web 框架開發(fā)一個(gè)基于 Web 應(yīng)用程序的動(dòng)態(tài)表單:

步驟描述
1創(chuàng)建一個(gè)名稱為 SpringExample 的項(xiàng)目,并且在創(chuàng)建項(xiàng)目的 src 文件夾中創(chuàng)建一個(gè)包 com.tutorialspoint。
2使用 Add External JARs 選項(xiàng),添加所需的 Spring 庫,解釋見 Spring Hello World Example 章節(jié)。
3使用 Add External JARs 選項(xiàng),同樣在你的項(xiàng)目中添加 log4j 庫 log4j-x.y.z.jar。
4在 com.tutorialspoint 包下創(chuàng)建 Java 類 HelloWorld 和 MainApp。
5src 文件中創(chuàng)建 Bean 配置文件 Beans.xml。
6src 文件中創(chuàng)建 log4J 配置文件 log4j.properties。
7最后一步是創(chuàng)建的所有 Java 文件和 Bean 配置文件的內(nèi)容,并運(yùn)行應(yīng)用程序,解釋如下所示。

這個(gè)是 HelloWorld.java 文件的內(nèi)容:

package com.tutorialspoint;
public class HelloWorld {
   private String message;
   public void setMessage(String message){
      this.message  = message;
   }
   public void getMessage(){
      System.out.println("Your Message : " + message);
   }
}

下面的是第二個(gè)文件 MainApp.java 的內(nèi)容:

package com.tutorialspoint;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.apache.log4j.Logger;
public class MainApp {
   static Logger log = Logger.getLogger(MainApp.class.getName());
   public static void main(String[] args) {
      ApplicationContext context = 
             new ClassPathXmlApplicationContext("Beans.xml");
      log.info("Going to create HelloWord Obj");
      HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
      obj.getMessage();
      log.info("Exiting the program");
   }
}

使用與我們已經(jīng)生成信息消息類似的方法,你可以生成調(diào)試錯(cuò)誤消息?,F(xiàn)在讓我們看看 Beans.xml 文件的內(nèi)容:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

   <bean id="helloWorld" class="com.tutorialspoint.HelloWorld">
       <property name="message" value="Hello World!"/>
   </bean>

</beans>

下面是 log4j.properties 的內(nèi)容,它定義了使用 Log4J 生成日志信息所需的標(biāo)準(zhǔn)規(guī)則:

# Define the root logger with appender file
log4j.rootLogger = DEBUG, FILE

# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
# Set the name of the file
log4j.appender.FILE.File=C:\\log.out

# Set the immediate flush to true (default)
log4j.appender.FILE.ImmediateFlush=true

# Set the threshold to debug mode
log4j.appender.FILE.Threshold=debug

# Set the append to false, overwrite
log4j.appender.FILE.Append=false

# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n

一旦你完成了創(chuàng)建源和 bean 的配置文件后,我們就可以運(yùn)行該應(yīng)用程序。如果你的應(yīng)用程序一切都正常,在 Eclipse 控制臺將輸出以下信息:

Your Message : Hello World!

同時(shí)如果你檢查你的 C:\ 驅(qū)動(dòng),那么你應(yīng)該發(fā)現(xiàn)含有各種日志消息的日志文件 log.out,其中一些如下所示:

<!-- initialization log messages -->

Going to create HelloWord Obj
Returning cached instance of singleton bean 'helloWorld'
Exiting the program

Jakarta Commons Logging (JCL) API

或者,你可以使用 Jakarta Commons Logging(JCL) API 在你的 Spring 應(yīng)用程序中生成日志。JCL 可以從 http://jakarta.apache.org/commons/logging/ 下載。我們在技術(shù)上需要這個(gè)包的唯一文件是 commons-logging-x.y.z.jar 文件,需要使用與上面的例子中你使用 log4j-x.y.z.jar 類似的方法來把 commons-logging-x.y.z.jar 放在你的類路徑中。

為了使用日志功能,你需要一個(gè) org.apache.commons.logging.Log 對象,然后你可以根據(jù)你的需要調(diào)用任何一個(gè)下面的方法:

  • fatal(Object message)

  • error(Object message)

  • warn(Object message)

  • info(Object message)

  • debug(Object message)

  • trace(Object message)

下面是使用 JCL API 對 MainApp.java 的替換:

package com.tutorialspoint;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.apache.commons.logging. Log;
import org.apache.commons.logging. LogFactory;
public class MainApp {
   static Log log = LogFactory.getLog(MainApp.class.getName());
   public static void main(String[] args) {
      ApplicationContext context = 
             new ClassPathXmlApplicationContext("Beans.xml");
      log.info("Going to create HelloWord Obj");
      HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
      obj.getMessage();
      log.info("Exiting the program");
   }
}

你應(yīng)該確保在編譯和運(yùn)行該程序之前在你的項(xiàng)目中已經(jīng)引入了 commons-logging-x.y.z.jar 文件。

現(xiàn)在保持在上面的例子中剩下的配置和內(nèi)容不變,如果你編譯并運(yùn)行你的應(yīng)用程序,你就會(huì)得到與使用 Log4J API 后獲得的結(jié)果類似的結(jié)果。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號