Spring - 使用 Log4J 进行日志记录
这是 Spring 应用程序中一个非常易于使用的 Log4J 功能。 下面的示例将带您通过简单的步骤来解释 Log4J 和 Spring 之间的简单集成。
我们假设您的机器上已经安装了 log4J。 如果您没有它,那么您可以从 https://logging.apache.org/ 下载它,然后将压缩文件解压缩到任何文件夹中。 我们将在项目中只使用 log4j-x.y.z.jar。
接下来,让我们有一个工作的 Eclipse IDE 并采取以下步骤使用 Spring Web 框架开发一个基于动态表单的 Web 应用程序 −
步骤 | 描述 |
---|---|
1 | 创建一个名为 SpringExample 的项目,并在创建的项目中的 src 文件夹下创建一个包 com.tutorialspoint。 |
2 | 使用 Add External JARs 选项添加所需的 Spring 库,如 Spring Hello World 示例 一章中所述。 |
3 | 使用 Add External JARs 在您的项目中添加 log4j 库 log4j-x.y.z.jar。 |
4 | 在 com.tutorialspoint 包下创建 Java 类 HelloWorld 和 MainApp。 |
5 | 在 src 文件夹下创建 Beans 配置文件 Beans.xml。 |
6 | 在 src 文件夹下创建 log4J 配置文件 log4j.properties。 |
7 | 最后一步是创建所有 Java 文件和 Bean 配置文件的内容,然后运行应用程序,如下所述。 |
这是 HelloWorld.java 文件的内容
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); } }
以下是第二个文件 MainApp.java 的内容
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"); } }
您可以使用与我们生成信息消息类似的方式生成 debug 和 error 消息。 现在让我们看一下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.tutorialspoint.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 配置文件后,让我们运行应用程序。 如果您的应用程序一切正常,这将打印以下消息 in Eclipse console −
Your Message : Hello World!
如果您检查您的 C:\\ 驱动器,那么您应该会发现您的日志文件 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 应用程序中生成日志。 JCL 可以从 https://jakarta.apache.org/commons/logging/ 下载。 从技术上讲,我们需要从这个包中取出的唯一文件是 commons-logging-x.y.z.jar 文件,该文件需要以与在上面示例中放置 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.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"); } }
在编译和运行程序之前,您必须确保在项目中包含 commons-logging-x.y.z.jar 文件。
现在保持上面示例中的其余配置和内容不变,如果您编译并运行您的应用程序,您将得到与使用 Log4J API 得到的结果相似的结果。