SpringMVC+Mybaits下Log4j的使用

以下步骤实现在springMVC,Mybatis框架下,使用log4j将日志写入Oracle数据库,并能够在控制台打印Mybatis执行的sql语句。

需要准备一张带有以下字段(ID,LOGINID,Class,Mothod,createTime,LogLevel,MSG)的数据库表。可根据自己需要进行更改。

1. 编写过滤器

package util;

import java.io.IOException;
import java.util.UUID;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.MDC;

public class LogFilter implements Filter {

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		// TODO Auto-generated method stub
		// 此处编写自己的业务
		util.MyCookie cookie = new util.MyCookie();
		String LoginID = cookie.Get_LoginID((HttpServletRequest) request);
		if(LoginID == null || "".equals(LoginID)){
			MDC.put("LOGINID","LOGINID未取到");
			MDC.put("ID", UUID.randomUUID().toString());
		}else{
			MDC.put("LOGINID",LoginID);
			MDC.put("ID", UUID.randomUUID().toString());
		}
		
		chain.doFilter(request, response);
	}

	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		// TODO Auto-generated method stub
		
	}

}
2. 编写log4j.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

	<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%5p [%t] - %m%n" />
		</layout>

		<!-- 限制输出级别 -->
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="LevelMax" value="ERROR" />
			<param name="LevelMin" value="DEBUG" />
		</filter>
	</appender>
	
	<!-- 屏蔽框架信息 -->
	<logger name="org.springframework">
		<level value="WARN" />
	</logger>


	<appender name="DATABASE" class="org.apache.log4j.jdbc.JDBCAppender">
		<param name="URL" value="jdbc:oracle:thin:@ip:port:orcl" />
		<param name="driver" value="oracle.jdbc.driver.OracleDriver" />
		<param name="user" value="username" />
		<param name="password" value="pwd" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern"
				value="INSERT INTO log_4j (ID,LOGINID,Class,Mothod,createTime,LogLevel,MSG) values ('%X{ID}','%X{LOGINID}','%C','%M','%d{yyyy-MM-dd HH:mm:ss}','%p','%m')" />
		</layout>
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="LevelMax" value="ERROR" />
			<param name="LevelMin" value="WARN" />
		</filter>
	</appender>


	<root>
		<priority value="debug" />
		<appender-ref ref="CONSOLE" />
		<appender-ref ref="DATABASE" />
	</root>
</log4j:configuration>

3. 在web.xml文件中添加过滤器及log4j.xml的配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
	version="3.0">
	
	  <display-name>MHHT</display-name>
	  <welcome-file-list>
	    <welcome-file></welcome-file>
	  </welcome-file-list>
	  <servlet>
	    <servlet-name>MHHT</servlet-name>
	    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	    <load-on-startup>1</load-on-startup>
	  </servlet>
	  <servlet-mapping>
	    <servlet-name>MHHT</servlet-name>
	    <url-pattern>/</url-pattern>
	  </servlet-mapping>
	  
	 <filter>
		<filter-name>logFilter</filter-name>
		<filter-class>util.LogFilter</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>logFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	  
	 
	  <listener>
	    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	  </listener>
	  <context-param>
	    <param-name>contextConfigLocation</param-name>
	    <param-value>/WEB-INF/MHHT-servlet.xml,
		 				/WEB-INF/MHHT-controller.xml,
		 				/WEB-INF/MHHT-data.xml</param-value>
	  </context-param>
	  <listener>
	    <listener-class>
				org.springframework.web.context.ContextLoaderListener
		</listener-class>
	  </listener>

      <context-param>
        <param-name>log4jConfigLocation</param-name>
        <param-value>/WEB-INF/log4j.xml</param-value>
      </context-param>
      <context-param>
        <param-name>log4jRefreshInterval</param-name>
        <param-value>60000</param-value>
      </context-param>
      <listener>
        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
      </listener>

</web-app>

4. 使用

package controller.admin;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TestLog4jController {

	@RequestMapping(value = "/test", produces = "text/plain;charset=UTF-8")
	@ResponseBody
	public void test() {
		System.out.println("in test()...");
		Log logger = LogFactory.getLog(this.getClass());
		logger.debug("debug!!!");
		logger.info("info!!!");
		logger.warn("warn!!!");
		logger.error("error!!!");
		logger.fatal("fatal!!!");
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值