spring配置log4j

1.配置基本的springMVC+hibernate环境。网上有很多这种例子。

2.需要使用log4j,首先就要在web.xml中配置log4j.方法有两种:

1.我们可以自己写一个servlet,服务器启动的时候自动加载,让该servlet加载log4j的配置文件(properties或者xml文件),这种方法百度百科讲log4j有详细说明。

2.加入spring自带的关于log4j的监听器。个人推荐使用第二种方法。

在web.xml文件中的配置为:

        <!-- Spring的log4j监听器****************************************** -->
	<!-- 设置log4j配置文件路径 -->
	<context-param>
		<param-name>log4jConfigLocation</param-name>
		<param-value><span style="color:#ff0000;">WEB-INF/log4j.properties</span></param-value>
	</context-param>
	<!-- 开一条watchdog线程每60秒扫描一下配置文件的变化 -->
	<context-param>
		<param-name>log4jRefreshInterval</param-name>
		<param-value>600000</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
	</listener>
	<!-- ************************************************** -->

3. 但是为了后期配置log4j的便利,这里还需药设置一个webAppRootKey,所以还需在web.xml文件中加入这样一段,后面会对其进行解释:

<context-param>
	<param-name>webAppRootKey</param-name>
	<param-value<span style="color:#ff0000;">>myWebApp</span>.root</param-value>
</context-param>

4.现在服务器启动就能够进行日志监听了,但是我们还得进行log4j的详细配置,这里使用的是一个log4j.properties文件。放在WEB-INF文件夹下。其内容为:

#log4j.rootLogger = [ level ] , appenderName, appenderName, ...
log4j.rootLogger = ALL, console,allR

#branch logger
log4j.logger.InfoLogger = INFO,infoR
log4j.logger.ErrorLogger = ERROR,errorR

log4j.logger.org.springframework=ERROR
log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN
log4j.logger.org.hibernate=DEBUG

#console
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n

#infoR
log4j.appender.infoR = org.apache.log4j.RollingFileAppender
log4j.appender.infoR.File =${<span style="color:#ff0000;">myWebApp</span><span style="font-family: Arial, Helvetica, sans-serif;">.root}/logs/info/infoLog.txt</span>
log4j.appender.infoR.MaxFileSize = 50MB
log4j.appender.infoR.MaxBackupIndex = 1000
log4j.appender.infoR.layout = org.apache.log4j.PatternLayout
log4j.appender.infoR.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] - %m%n

#errorR
log4j.appender.errorR = org.apache.log4j.RollingFileAppender
log4j.appender.errorR.File =${<span style="color:#ff0000;">myWebApp</span>.root}/logs/error/errorLog.txt
log4j.appender.errorR.MaxFileSize = 50MB
log4j.appender.errorR.MaxBackupIndex = 1000
log4j.appender.errorR.layout = org.apache.log4j.PatternLayout
log4j.appender.errorR.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] - %m%n

#allR
log4j.appender.allR = org.apache.log4j.RollingFileAppender
log4j.appender.allR.File =${<span style="color:#ff0000;">myWebApp</span>.root}/logs/all/allLog.txt
log4j.appender.allR.MaxFileSize = 500MB
log4j.appender.allR.MaxBackupIndex = 1000
log4j.appender.allR.layout = org.apache.log4j.PatternLayout
log4j.appender.allR.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] - %m%n

说明:

在这个配置文件中,如果有不懂其中内容的同学,情查看百度百科,对log4j.properties的配置有详细的说明.

我在配置文件中指明,对于所有的日志信息都回打印到控制台,同时输出到/logs/all/allLog.txt文件中。

配置文件中除了一个根记录器(rootLogger),我还配了两个分支(InfoLogger和ErrorLogger),这三个logger的内容分别写到,与对应的日志文件对应为:

rootLogger  -->    /logs/all/allLog.txt

InfoLogger   -->       /logs/info/infoLog.txt

ErrorLogger  -->      /logs/error/errorLog.txt

其中infoLogger,和ErrorLogger因为是继承于rootLogger,所以他们的内容也会同时输出到/logs/all/allLog.txt文件中

在该配置文件中myWebApp.root就是我们在第三步中配置的内容。名字可以自己更改。在第三步配置webAppRootKey还有一个作用就是避免在同一个web容器中(例如tomcat)有多个web项目而产生混乱。

5.如果是用eclipse进行开发,还需要在WebContenet(如果是myeclipse就是WebRoot)下建立好文件结构:

6.此时就可以启动该项目了。

启动后到服务器下找到该项目,在该项目下可以发现有一个logs文件夹,但是只有allLog.txt中有内容,其余的两个文件是空的。因为我errorLog和infoLog都不是从根记录器来的,这两个文件是通过调用errorLog和infoLog才会记录内容的。下面就来看一下例子。

1.在src下新建util包,同时在util包下面新建LogRecord类:

package utils;

import org.apache.log4j.Logger;
public class LogRecord {
	private static Logger info = Logger.getLogger("<span style="color:#ff0000;">InfoLogger</span>");
	private static Logger error = Logger.getLogger("<span style="color:#ff0000;">ErrorLogger</span>");
	public LogRecord(){}

	/**
	 * 一般情况记录到/logs/infoLog.txt
	 */
	public static void info(String infomation){
		info.info(infomation);
	}

	/**
	 * 错误信息记录到/logs/errorLog.txt
	 */
	public static void error(String infomation){
		error.error(infomation);
	}
}

在这个工具类中,我分别载入了info记录器和error记录器。只要通过这两个记录器记录日志,那么日志肯定就会根据log4j.properties的配置,写入到/logs/info/infoLog.txt和/logs/error/errorLog.txt中。下面来写一个servlet调用这个工具类。

package servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class servletDemo1 extends HttpServlet {
    public servletDemo1() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//向控制台和/logs/info/infoLog.txt中写内容
		LogRecord.info("用户登录成功!");

		//向控制台和/logs/error/errorLog.txt中写内容
		LogRecord.error("这个用户长得太丑了!");
	}

}

现在假设我的项目名称为webApp.那么此时通过浏览器访问http://localhost:8080/webApp/servletDemo1

现在再到/logs/文件夹下面去看,可以看到info文件和error文件中都已经有内容了。

在开发过程中,如果需要有日志记录,就可以直接调用静态方法LogRecord.info(String str)或者LogRecord.error(String str)。

spring配置log4j

时间: 2024-10-10 13:00:08

spring配置log4j的相关文章

Spring 配置log4j和简单介绍Log4J的使用

Log4j 是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接口服务器.NT的事 件记录器.UNIX Syslog守护进程等:我们也可以控制每一条日志的输出格式:通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程.最令人感兴趣的就 是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码. 如此强大的优越性,实际上手并不难,尤其在spring框架下,使用log4j更是容易,下面介绍一下spri

spring集成Log4j以及log4j配置简要说明

Spring集成: web.xml中配置log4j <context-param> <param-name>log4jConfigLocation</param-name> <param-value>WEB-INF/log4j.xml</param-value></context-param> <!-- 加载Spring框架中的log4j监听器Log4jConfigListener --><listener>

利用spring中的Log4jConfigListener配置log4j

1.编辑好log4j的配置文件,可以为xml也可以是properties. 2.在web.xml中分别配置context-param标签和spring中log4j配置监听器,如下:

Spring的Log4J配置器Log4jWebConfigurer介绍

1. Logj4简介 Log4j是Apache大旗下的一个子项目,它可以用来重定向应用日志文件的输出流,无论我们想将日志文件输出到控制台还是网络还是其他地方,都可以通过logj4来配置,如果我们的应用里面引入的Spring框架技术,我们可以通过Spring来初始化logj4的配置文件信息,下面2,3节是对Spring文档的一些翻译第4节是作者自己对一些问题的看法: 2. Log4jWebConfigurer及主要配置参数 Log4jWebConfigurer是一个方便的自定义log4j web环

eclipse中纯java配置log4j日志

1.新建java项目log4Test 2.新建目录lib,把log4j-1.2.9.jar包放入lib目录 3.右键工程,选择Properties->Java Build Path->Libraries->Add JARs...,选择lib下的log4j-1.2.9.jar 4.在src目录下新建两个文件log4j.properties和log.txt log4j.properties文件配置如下: log4j.appender.stdout.layout.ConversionPatte

SpirngMVC 配置 Log4j

之前在日志中一直看不到用户请求路径的日志.原来SpringMVC中Log4j的配置方式有些不同 如果使用spring插件创建一个spring template project,它会默认带log4j,只要改下log4j的配置就可以使用了,如果自己创建的project,就要加载下log4f的包了,使用步骤如下 1.pom.xml加入log4j的依赖包 Java代码   <!-- Logging --> <dependency> <groupId>org.slf4j</

关于已配置log4j,运行tomcat时显示警告的分析

有时候,我们在JavaEE项目中配置了log4j及其参数信息,但是启动tomcat时,仍会显示如下信息: 通过信息可以看出,在ContextLoader中提示的该警告,那么我们去ContextLoad中查看,此时我们就会发现,我们初始化上下文时,已经调用了日志相关的代码. 所以该问题应该与配置文件中的加载顺序有关系.将web.xml中配置log4j相关的信息放到spring监听器ContextLoaderListener之前即可.

shiro整合spring配置

shiro应用到项目中,一般都是通过spring来管理.下面就如何把shiro整理到spring中进行了讲解,及给出了配置的步骤: 一.pom.xml文件配置 本例子主要是介绍maven管理的web项目进行配置介绍,因此,首先需建立好一个maven管理的web项目(可参考本博客创建maven管理的web项目). pom.xml文件配置,主要是添加相关依赖的jar支持.因为整合到spring中需添加spring支持.具体配置参考配置代码: 1 <project xmlns="http://m

spring中log4j的使用---转载

原文链接:http://www.codeceo.com/article/log4j-usage.html 日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录.在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包. 一.入门实例 1.新建一个JAva工程,导入包log4j-1.2.17.jar,整个工程最终目录如下 2.src同级创建并设置log4j.properties ### 设