位置:首頁 > Java技術 > Spring > Spring 日誌 Log4J

Spring 日誌 Log4J

Spring應用是非常容易使用Log4J裡麵的功能。下麵的例子將帶你通過簡單的步驟來解釋Log4j和Spring之間的簡單集成。

我假設你已經有你的機器上安裝log4J日誌,如果你冇有,那麼你可以從 http://logging.apache.org/ 下載並簡單地提取任意文件夾的壓縮文件。我們將使用唯一的log4j-x.y.z.jar在項目中。 

接下來,使用Eclipse IDE,並按照以下步驟使用Spring Web框架開發動態表單的Web應用程序:

步驟 描述
1 Create a project with a name SpringExample and create a package com.yiibai under the src folder in the created project.
2 Add required Spring libraries using Add External JARs option as explained in the Spring Hello World Example chapter.
3 Add log4j library log4j-x.y.z.jar as well in your project using using Add External JARs.
4 Create Java classes HelloWorld and MainApp under the com.yiibai package.
5 Create Beans configuration file Beans.xml under the src folder.
6 Create log4J configuration file log4j.properties under the src folder.
7 The final step is to create the content of all the Java files and Bean Configuration file and run the application as explained below.

這裡是HelloWorld.java的文件的內容:

package com.yiibai;

public class HelloWorld {
   private String message;

   public void setMessage(String message){
      this.message  = message;
   }

   public void getMessage(){
      System.out.println("Your Message : " + message);
   }
}

下麵是第二個文件MainApp.java的內容:

package com.yiibai;

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");
   }
}

可以生成,因為我們已經產生信息的消息調試和錯誤消息類似的方式。現在,讓我們來看看 beans.xml 文件的內容:

<?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.yiibai.HelloWorld">
       <property name="message" value="Hello World!"/>
   </bean>

</beans>

下麵是log4j.properties 文件的內容定義,產生的日誌消息所需的 Log4J 的標準規則:

# 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

創建源代碼和bean配置文件完成後,讓我們運行應用程序。如果您的應用程序一切順利,這將打印以下信息在Eclipse的控製台:

Your Message : Hello World!

有時,如果查看 C:\ drive,那麼應該找到日誌文件log.out各種日誌消息,內容如下:

<!-- initialization log messages -->

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

Jakarta Commons記錄(JCL)API

另外,您可以使用Jakarta Commons Logging (JCL) API來在Spring應用程序生成的日誌。 JCL可以從http://jakarta.apache.org/commons/logging/下載。我們在技術上需要此軟件包的唯一文件是commons-logging-x.y.z.jar文件,該文件需要被放置在classpath類似的方式,已經把 log4j-x.y.z.jar 放入在上麵的例子。 

要使用需要一個org.apache.commons.logging.Log對象的日誌記錄功能,然後可以調用下麵的方法之一根據您的需求:

  • fatal(Object message)

  • error(Object message)

  • warn(Object message)

  • info(Object message)

  • debug(Object message)

  • trace(Object message)

下麵是MainApp.java的取代,這使得使用JCL API:

package com.yiibai;

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");
   }
}

你已經確定你包括編譯和運行程序之前在項目中共享記錄 - xyzjar文件。

現在,保持配置和上麵的例子中其它的內容不變,如果編譯並運行應用程序會得到類似的結果。