`

log4j2在SpringMVC工程中的运用

阅读更多

        SpringMVC返回json数据的三种方式文件可知,我的SpringMVC工程已支持返回json数据,下面我们再给它增加日志输出功能。

一.引入日志相关的jar包


        不知为什么,经不是特别全面的验证,这七个jar包必须都引用到我的SpringMVC的工程中来。

 

二.增加log4j2.xml配置

<?xml version="1.0" encoding="UTF-8"?>  
  
<configuration status="error">  
    <!--先定义所有的appender-->  
    <appenders>  
        <!--这个输出控制台的配置-->  
        <Console name="Console" target="SYSTEM_OUT">  
            <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->  
            <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>  
            <!--这个都知道是输出日志的格式-->  
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>  
        </Console>  
        <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用-->  
        <File name="log" fileName="log/test.log" append="false">  
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>  
        </File>  
  
        <!--这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->  
        <RollingFile name="RollingFile" fileName="logs/app.log"  
                     filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">  
            <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>  
            <SizeBasedTriggeringPolicy size="20MB"/>  
        </RollingFile>  
    </appenders>  
    <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->  
    <loggers>
    	<logger name="com.bijian.study.controller" level="trace" additivity="false">
    		<appender-ref ref="RollingFile"/>
    		<appender-ref ref="log"/>  
            <appender-ref ref="Console"/>
    	</logger>
        <!--建立一个默认的root的logger-->  
        <root level="info">  
            <appender-ref ref="RollingFile"/>  
            <appender-ref ref="log"/>  
            <appender-ref ref="Console"/>  
        </root>  
    </loggers>
</configuration>

 

三.修改代码验证

HelloController.java

package com.bijian.study.controller;

import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import com.bijian.study.service.HelloService;

@Controller
public class HelloController {

    private static Logger logger = LoggerFactory.getLogger(HelloController.class);

    @Autowired
    private HelloService helloService;

    @RequestMapping("/greeting")
    public ModelAndView greeting(@RequestParam(value = "name", defaultValue = "World") String name) {

        Map<String, Object> map = new HashMap<String, Object>();
        try {
            //由于浏览器会把中文直接换成ISO-8859-1编码格式,如果用户在地址打入中文,需要进行如下转换处理
            String tempName = new String(name.getBytes("ISO-8859-1"), "utf-8");

            logger.trace("tempName:" + tempName);
            logger.info(tempName);

            String userName = helloService.processService(tempName);

            map.put("userName", userName);
            
            logger.trace("运行结果:" + map);
        } catch (UnsupportedEncodingException e) {
            logger.error("HelloController greeting方法发生UnsupportedEncodingException异常:" + e);
        } catch (Exception e) {
            logger.error("HelloController greeting方法发生Exception异常:" + e);
        }
        return new ModelAndView("/hello", map);
    }

    @ResponseBody
    @RequestMapping("/greet")
    public Map<String, Object> greet(HttpServletResponse response,
            @RequestParam(value = "name", defaultValue = "World") String name) {

        Map<String, Object> map = null;
        try {
            //由于浏览器会把中文直接换成ISO-8859-1编码格式,如果用户在地址打入中文,需要进行如下转换处理
            String tempName = new String(name.getBytes("ISO-8859-1"), "utf-8");
            
            logger.trace("tempName:" + tempName);
            logger.info(tempName);

            String userName = helloService.processService(tempName);

            map = new HashMap<String, Object>();
            map.put("userName", userName);
            
            logger.trace("运行结果:" + map);
        } catch (UnsupportedEncodingException e) {
            logger.error("HelloController greet方法发生UnsupportedEncodingException异常:" + e);
        } catch (Exception e) {
            logger.error("HelloController greet方法发生Exception异常:" + e);
        }
        return map;
    }
}

HelloService.java

package com.bijian.study.service;

public interface HelloService {

    public String processService(String name) throws Exception;
}

HelloServiceImpl.java

package com.bijian.study.service.impl;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

import com.bijian.study.service.HelloService;

@Service("helloService")
public class HelloServiceImpl implements HelloService {

    private static Logger logger = LoggerFactory.getLogger(HelloServiceImpl.class);
    
    @Override
    public String processService(String name) throws Exception {
        
        logger.info("HelloService processService name:" + name);
        return "Hello " + name;
    }
}

        启动Tomcat,浏览器中输入http://localhost:8080/SpringMVC/greet?name=lisi,运行结果如下:


        控制台输出:

16:08:34.120 TRACE com.bijian.study.controller.HelloController 62 greet - tempName:lisi
16:08:34.125 INFO  com.bijian.study.controller.HelloController 63 greet - lisi
16:08:34.125 INFO  com.bijian.study.service.impl.HelloServiceImpl 17 processService - HelloService processService name:lisi
16:08:34.126 TRACE com.bijian.study.controller.HelloController 70 greet - 运行结果:{userName=Hello lisi}

        app.log输出:

2016-06-26 at 16:08:34 CST TRACE com.bijian.study.controller.HelloController 62 greet - tempName:lisi
2016-06-26 at 16:08:34 CST INFO  com.bijian.study.controller.HelloController 63 greet - lisi
2016-06-26 at 16:08:34 CST INFO  com.bijian.study.service.impl.HelloServiceImpl 17 processService - HelloService processService name:lisi
2016-06-26 at 16:08:34 CST TRACE com.bijian.study.controller.HelloController 70 greet - 运行结果:{userName=Hello lisi}

 

        整个工程见附件《SpringMVC.zip》。

  • 大小: 14.3 KB
  • 大小: 7.4 KB
分享到:
评论

相关推荐

    springMVC5.1+mybatis3.46+log4j2+dbcp2项目,无论学习和项目搭建适合,含数据库脚本,本人自己搭建可运行。

    这是一个基于SpringMVC 5.1、MyBatis 3.4.6、Log4j2和DBCP2的Web应用程序项目,适用于学习和实际项目搭建。以下将详细阐述这些技术及其在项目中的作用。 首先,SpringMVC是Spring框架的一部分,是一个用于构建Web...

    log4j实例java工程.zip

    这个“log4j实例java工程.zip”压缩包包含了在一个基于Eclipse、Maven、Spring和SpringMVC的项目中使用Log4j的具体示例。 首先,Eclipse是Java开发常用的集成开发环境(IDE),它提供了一整套工具来帮助编写、调试...

    搭建springMVC+Mybatis+quartz+log4j+maven项目

    在项目中,你需要配置log4j.properties或log4j.xml,设置日志输出级别、目的地和格式。 **Maven**: Maven是一个项目管理和综合工具,它管理项目的构建、依赖关系和版本控制。在项目中,你需要创建一个pom.xml文件...

    Netbeans实现SpringMVC+Maven+Junit+Mybites+log4J+MySQL实现数据库增删改

    在本项目中,我们主要探讨了如何利用NetBeans IDE、SpringMVC、Maven、MyBatis、JUnit和Log4j这些技术栈来构建一个完整的Java Web应用,以实现对MySQL数据库的CRUD(创建、读取、更新、删除)操作。下面将详细解析每...

    idea 14 ssm 全注解框架+log4j+事物控制+mybatis基础Dao配置

    在实际项目中,"ssmForOa 2"可能是一个示例工程,包含了这些配置和实现。开发者可以通过阅读和理解源代码,快速学习SSM框架的使用和配置技巧。 总的来说,SSM全注解配置大大提高了开发效率,Log4j提供了灵活的日志...

    毕业设计:资料管理系统-springboot整合ssm,shiro,log4j.zip

    【标题】"毕业设计:资料管理系统-springboot整合ssm,shiro,log4j.zip"涉及的关键技术点包括SpringBoot、SSM(Spring、SpringMVC、MyBatis)、Shiro以及Log4j,这些都是Java后端开发中的重要组成部分。下面将详细...

    idea工具创建的Spring+SpringMVC+Hibernate+maven项目

    标题中的"idea工具创建的Spring+...总之,"idea工具创建的Spring+SpringMVC+Hibernate+maven项目"是一个综合性的学习案例,可以帮助初学者快速入门Java Web开发,理解各框架之间的协作以及如何在实际项目中运用它们。

    springmvc_hibernate4

    项目中涉及到的技术栈较为全面,主要包括Spring、SpringMVC、Hibernate、MySQL驱动、log4j、c3p0数据源等。接下来我们将详细介绍这些技术栈的具体作用以及在项目中如何进行配置。 #### 二、技术栈具体解析 1. **...

    Spring+SpringMVC+Mybatis整合

    在这个项目中,我们看到它们被集成在一起,同时还涉及了日志处理库log4j和SLF4J。下面我们将深入探讨这些技术及其整合过程。 **Spring框架** 是一个全面的后端开发框架,它提供了依赖注入(DI)和面向切面编程(AOP...

    springmvc开发所需的所有jar包

    1. **log4j-1.2.17**: 这是 Apache 的日志框架 Log4j 的一个版本,用于应用程序的日志记录。Log4j 提供了灵活的日志配置,允许开发者根据需要调整日志级别,如 DEBUG、INFO、WARN、ERROR 和 FATAL,方便调试和监控...

    SpringMvc完整的工程(jar包齐全)

    2. `src/main/resources`:资源文件目录,可能包含数据库连接配置(如`db.properties`)、log4j配置(`log4j.properties`)等。 3. `src/main/webapp`:Web应用目录,包含JSP页面、静态资源、WEB-INF子目录等。 4. `...

    springmvc.rar

    在压缩包"springmvc.rar"中,包含的jar包很可能包括Spring MVC的核心库、Spring核心库、Jackson或Gson用于JSON处理、以及其他可能的依赖,如Apache Commons Lang、log4j等。这些库文件是构建和运行Spring MVC应用的...

    springmvc开发所需全部包

    - `log4j` 或 `logback`:日志记录框架,用于记录应用程序的运行信息,便于调试和监控。 9. **Test**: - `spring-test`: 提供了测试 Spring 应用的支持,包括单元测试和集成测试。 - `junit`: 测试框架,用于...

    SSM框架——详细整合教程(Spring+SpringMVC+MyBatis).docx

    - 在`log4j.properties`文件中配置日志级别和输出方式。 7. **编写前端页面**:使用HTML、CSS、JavaScript等技术栈构建用户界面。 #### 五、总结 SSM框架的整合是一个较为复杂但又十分重要的过程。通过以上步骤...

    SpringMVC+Spring+JPA+Maven框架搭建

    - Log4j.properties:Log4j日志记录配置文件,用于配置日志系统。 3. 单元测试说明 为每个层次编写单元测试类,确保实现的业务逻辑和数据访问逻辑正确无误。 4. Web页面结构说明 Web页面放置在views目录下,需要...

    Spring+SpringMVC+Mybatis框架搭建所需jar包

    在Java Web开发中,Spring、SpringMVC和Mybatis是三个非常重要的开源框架,它们各自在不同的层面上为应用程序提供支持。Spring作为一个全面的轻量级应用框架,提供了依赖注入(DI)和面向切面编程(AOP)等功能;...

    微信开发框架wechat4j

    &gt; * log4j.jar 1.2以上 &gt; * fastjson-1.2.0.jar &gt; * sword-lang-1.2 (https://github.com/sword-org/sword-lang/releases) &gt; * fluent-hc-4.3.6.jar(httpclient依赖) &gt; * httpclient-4.3.6.jar &gt; * ...

    springmvc3 hibernate4 整合

    - **依赖库**:Spring MVC 3.1.1、Hibernate 4.1.0、SLF4J 1.6.1、log4j 1.2.16、Ehcache 2.4.3等,以及数据库驱动(如MySQL的connector)用于数据连接。 2. **工程主要内容**: - **集成**:Spring MVC 3.1.1与...

    完整版 Java开发实训课程系列-SpringMVC框架技术教程 第9章 SSM框架整合 (共26页).pptx

    在具体实现时,需要创建相应的配置文件,如数据库服务器配置文件`db.properties`、日志配置文件`log4j.properties`、MyBatis配置文件`SqlMapConfig.xml`等。此外,还可以使用逆向工程生成PO类(Plain Old Java ...

Global site tag (gtag.js) - Google Analytics