`
ZHENFENGSHISAN
  • 浏览: 71557 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
7e6e47ee-161c-3be5-bd41-0eb274ec4d0e
Spring+Spring...
浏览量:35963
31792615-da99-349b-8109-bbf420058c1d
Spring+Spring...
浏览量:25629
社区版块
存档分类
最新评论

Spring+SpringMVC+MyBatis+easyUI整合优化篇(二)Log4j讲解与整合

阅读更多

日常啰嗦

上一篇文章主要讲述了一下syso和Log间的一些区别与比较,重点是在项目的日志功能上,因此,承接前文《Spring+SpringMVC+MyBatis+easyUI整合优化篇(一)System.out.print与Log》,本文是一个较为直观的日志功能案例,java的日志框架很多,如Log4j、Log4j2、logback、SLF4J,篇幅有限,所以本篇只介绍一下Log4j,并将其整合到项目中,对于其他日志框架,想了解的可以对应的去学习一下。

Log4j简介

日志记录功能是一个项目中重要的组成部分,log4j是APache下的一个开源日志组件,为java开发者提供了很大的便利。

Log4j由三个重要的组件构成:

  • Loggers,日志信息的优先级

日志信息的优先级从高到低有ERROR、WARN、 INFO、DEBUG,分别用来指定这条日志信息的重要程度,设置为高级别的优先级时,低优先级的日志将不会输出,比如将日志级别设置为INFO,则DEBUG级别的目录不会被记录,为了防止日志输出泛滥,最好不要将日志级别设置太低,一般为INFO即可。

  • Appenders,日志信息的输出目的地

日志信息的输出目的地指定了日志将打印到控制台还是文件中,参数如下:
org.apache.log4j.ConsoleAppender (控制台)
org.apache.log4j.FileAppender (文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件,本文中的案例选择的策略)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件,也是一个不错的选择
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

  • Layouts,日志信息的输出格式

输出格式的功能是控制日志信息的显示内容,参数如下:
org.apache.log4j.HTMLLayout(以HTML表格形式布局)
org.apache.log4j.PatternLayout(可以灵活地指定布局模式,本案例所选择的策略,需对日志格式进行设置)
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

log4j简单demo

下面是一个简单的案例,并与System.out.print进行比较,代码在github上,可以下载自己运行一下。

日志输出:

import org.apache.log4j.Logger;
public class LogTest {
    static Logger log = Logger.getLogger(LogTest.class);//获取日志记录器
    public static void main(String... arg0) {
        long start = System.currentTimeMillis();
        for (int i = 0; i < 10; i++) {
            log.info("log输出" + i);
        }
        long time = System.currentTimeMillis() - start;
        log.info("所用时间" + time);
    }
}

syso输出:

public class SysoTest {
    public static void main(String[] args) {
        long start = System.currentTimeMillis();
        for (int i = 0; i < 10; i++) {
            System.out.println("syso打印" + i);
        }
        long time = System.currentTimeMillis() - start;
        System.out.println("所用时间" +time);
    }
}

Log4j配置文件如下:

log4j.rootLogger=DEBUG, debug
log4j.logger.debug=debug
log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender
log4j.appender.debug.layout=org.apache.log4j.PatternLayout
log4j.appender.debug.layout.ConversionPattern= [%d{HH\:mm\:ss}] %c{1} - %m%n
log4j.appender.debug.datePattern='.'yyyy-MM-dd
log4j.appender.debug.Threshold = DEBUG
log4j.appender.debug.append=true
log4j.appender.debug.File=./logs/ssm-maven/debug.log

此配置文件为log4j-test.properties,也会上传到仓库中,注意:在测试本例时,需将此文件名改为log4j.properties
运行后可得到如下结果,在项目logs目录下创建了debug.log文件夹并将输出写入到文件中。
日志输出

log4j整合并设置分包的日志策略

上面只是一个简单的demo,重要的还是要将日志功能集成到项目中来。

配置文件及讲解如下:

#log4j.rootLogger = [level],appenderName,appenderName2,...
#level是日志记录的优先级,分为OFF,TRACE,DEBUG,INFO,WARN,ERROR,FATAL,ALL
##Log4j建议只使用四个级别,优先级从低到高分别是DEBUG,INFO,WARN,ERROR
#通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关
#比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来

log4j.rootLogger=DEBUG, debug

#Log4j针对不同包指定level:
#一般在生产环境中应用系统,日志级别调整为INFO以避免过多的输出日志。
#但某些时候,需要跟踪具体问题,那么就得打开DEBUG日志。
#但是如果打开log4j.rootLogger,则需要的信息就会淹没在日志的海洋中。
#此时,需要单独指定某个或者某些Logger的日志级别为DEBUG,而rootLogger保持INFO不变。
#参考配置如下(指定com.ssm.maven.core.admin类的日志输出)
#分包设置,admin与service包中的日志输出分离
log4j.logger.com.ssm.maven.core.admin=INFO,admin
log4j.logger.com.ssm.maven.core.service=INFO,service

log4j.logger.org.springframework=OFF
log4j.logger.org.mybatis.spring=ON
log4j.logger.org.springframework.context.annotation=OFF

log4j.appender.admin=org.apache.log4j.DailyRollingFileAppender
log4j.appender.admin.layout=org.apache.log4j.PatternLayout
log4j.appender.admin.layout.ConversionPattern= [%d{HH\:mm\:ss}] %c{1} - %m%n
log4j.appender.admin.datePattern='.'yyyy-MM-dd
log4j.appender.admin.Threshold = INFO
log4j.appender.admin.append=true
#admin包下的日志输出到admin.log文件中
log4j.appender.admin.File=${catalina.home}/logs/ssm-maven/admin.log

log4j.appender.service=org.apache.log4j.DailyRollingFileAppender
log4j.appender.service.layout=org.apache.log4j.PatternLayout
log4j.appender.service.layout.ConversionPattern= [%d{HH\:mm\:ss}] %c{1} - %m%n
log4j.appender.service.datePattern='.'yyyy-MM-dd
log4j.appender.service.Threshold = INFO
log4j.appender.service.append=true
#admin包下的日志输出到service.log文件中
log4j.appender.service.File=${catalina.home}/logs/ssm-maven/service.log

log4j.logger.debug=debug
log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender
log4j.appender.debug.layout=org.apache.log4j.PatternLayout
log4j.appender.debug.layout.ConversionPattern= [%d{HH\:mm\:ss}] %c{1} - %m%n
log4j.appender.debug.datePattern='.'yyyy-MM-dd
log4j.appender.debug.Threshold = DEBUG
log4j.appender.debug.append=true
log4j.appender.debug.File=${catalina.home}/logs/ssm-maven/debug.log

log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG

部署到tomcat服务器,并访问相关页面后,可以到tomcat目录的logs目录下查看日志输出文件:
日志文件

查看日志文件,可以得到日志已经分包输出的结果。

结语

其实无论是System.out或者Log,我们都是希望快速的定位问题,至于更多的使用System.out而不是Log的原因,其实也多是因为觉得System.out更方便,或者不会用Log亦或者是觉得Log不够灵活,而通过本文中的案例,加上你自己的动手实践,应该可以让你对于Log4j技能从不会到会了,也能让你对于Log4j的灵活性有些认识了。

我的github地址:https://github.com/ZHENFENG13/ssm-demo
其中ssm-maven是本次代码更新的目录。

2
1
分享到:
评论

相关推荐

    spring+springmvc+mybatis+结合前端easyUI框架,log4j日志文件配置

    例如,src/main/java目录下有SSM框架的配置和业务逻辑代码,src/main/resources包含log4j配置以及MyBatis的Mapper文件,Web-INF目录下有SpringMVC的配置和视图解析路径。 总的来说,这个项目展示了如何将SSM框架与...

    Maven+Spring+SpringMVC+Mybatis+Log4j+EasyUI1.3.2+Oracle实例

    这是一个基于Java技术栈的Web应用实例,整合了Maven、Spring、SpringMVC、Mybatis、Log4j和EasyUI1.3.2,并且采用了Oracle数据库。让我们逐一解析这些技术及其在项目中的作用。 **Maven**: Maven是一个项目管理和...

    Spring+SpringMVC+Mybatis+easyUI实现简单的后台管理系统.rar

    例如,Spring Security可以用来处理用户认证和授权,日志框架如Log4j或SLF4J记录应用运行时的信息。 通过这个项目,开发者不仅可以学习到Spring全家桶的整合使用,还能掌握Web应用的开发流程,理解前后端交互的基本...

    springmvc+mybatis+jquery easyui+json+log4j

    Spring MVC、MyBatis、jQuery EasyUI、JSON 和 Log4j 是常见的 Java Web 开发技术栈,它们在构建高效、可维护的Web应用程序中扮演着重要角色。下面将详细介绍这些技术及其整合应用。 1. Spring MVC:Spring MVC 是 ...

    使用EasyUI+Springmvc实现的CRUD

    例如,使用Spring Security进行权限控制,使用缓存提高数据访问速度,以及使用Log4j等工具进行日志记录,便于调试和问题追踪。 总之,"使用EasyUI+Springmvc实现的CRUD"是一个典型的前后端分离的Web开发实例,通过...

    SSM+easyui+三级联动可以运行代码,方便学习小例子,培训用

    SSM(Spring、SpringMVC、MyBatis)是一个经典的Java web开发框架组合,它将Spring的核心容器、Spring的Web MVC模块以及MyBatis持久层框架整合在一起,为开发者提供了强大的服务。EasyUI则是一个基于jQuery的UI组件...

    基于SpringMVC+EasyUI的后台管理系统源码+数据库,已投入生产线上使用 开箱即用,五分钟完成部署

    除了SpringMVC和EasyUI,此项目可能还使用了其他技术,如Spring Boot、MyBatis或Hibernate作为持久层框架,Spring Security或Shiro进行权限控制,以及Log4j或Logback进行日志管理。这些技术的结合使用,构建了一个...

    SpringMVC+shiro权限管理

    6. **日志**:如Log4j或Logback,记录系统运行日志,便于调试和监控。 **系统功能** 1. **用户管理**:包括用户注册、登录、修改密码等功能。 2. **角色管理**:定义角色,分配权限。 3. **权限管理**:设置资源...

    基于ssm的人事管理系统+源代码+文档说明

    ​ 日志:log4j ​ 前端框架:Bootstrap,EasyUI ### 运行环境和所需工具 ​ 编译器:IntelliJ IDEA ​ 项目构建工具:Maven ​ 数据库:Mysql5.7 ​ JDK版本:jdk1.8 ​ Tomcat版本:Tomcat8.x ![emplist...

    SSM_EasyUI公司员工管理系统.zip

    日志框架如Log4j或SLF4J则用于记录系统的运行状态和错误信息,便于问题排查。异常处理机制可以确保系统在遇到错误时能够优雅地恢复,避免服务中断。 总的来说,SSM_EasyUI公司员工管理系统通过整合强大的后端框架和...

    企业管理(完整系统)

    Log4j或Logback进行日志记录,便于系统监控和问题排查;Quartz或Spring Task可以用来执行定时任务,如自动备份、数据统计等。 总的来说,【企业管理(完整系统)】是一个集成了多种技术的综合性管理平台,通过SSM+...

    用springboot基于SSM写的在线投票系统.rar

    - 集成Log4j或Logback进行日志记录,便于排查问题和系统监控。 7. **测试与部署** - 编写单元测试,确保各模块功能正常。 - 打包为JAR或WAR文件,部署到服务器,如Tomcat或直接使用SpringBoot内置服务器运行。 ...

    SSM框架的demo

    6. **Log4j**:Log4j是一个日志记录工具,用于记录程序运行过程中的信息,便于调试和问题定位。在项目中,配置`log4j.properties`文件可以设置不同级别的日志输出。 7. **Redis** 和 **Ehcache**:Redis是高性能的...

    SpringMVC搭建,实现数据录入和uploadify附件上传下载

    - **日志和异常处理**:添加日志框架如Log4j,以及全局异常处理器如`@ControllerAdvice`和`@ExceptionHandler`。 2. **datagrid数据显示**: - DataGrid是一种常见的前端展示数据的组件,如EasyUI或iGrid,用于...

    BaseProjectSSM.7z

    在项目中,可能使用了如Log4j或SLF4J这样的日志框架。 9. **资源文件"ITJC8-获取更多资源.html"**:这可能是一个链接或教程,提供了更多关于SSM框架或Java Web开发的学习资源。 10. **"补充.mp4"**:这可能是一个...

    Java要学习哪些技术.docx

    2. 学习Log4j日志管理,掌握SVN/GIT版本控制,以及连接池技术。 3. Nutz集成框架的使用,包括MVC、DAO和IOC。 4. 深入理解Spring框架,包括配置、IOC和AOP,以及声明式事务。 5. 学习MyBatis框架,掌握输入/输出映射...

    大数据培训课程安排.pdf

    主要技术包括:Hibernate、Spring、SpringMVC、log4j slf4j 整合、myBatis、struts2、Shiro 、redis、流程引擎activity, 爬 ⾍技术nutch,lucene,webService CXF、Tomcat集群和热备 、MySQL读写分离 4. 描述如下:...

    单点登录源码

    Log4J | 日志组件 | [http://logging.apache.org/log4j/1.2/](http://logging.apache.org/log4j/1.2/) Swagger2 | 接口测试框架 | [http://swagger.io/](http://swagger.io/) sequence | 分布式高效ID生产 | ...

    t淘淘商城项目 商城项目 视频和源码教程 详细

    &lt;artifactId&gt;slf4j-log4j12 ${slf4j.version} &lt;!-- Mybatis --&gt; &lt;groupId&gt;org.mybatis &lt;artifactId&gt;mybatis ${mybatis.version} &lt;groupId&gt;org.mybatis &lt;artifactId&gt;mybatis-spring ${...

    Java工程师简历模板

    - **Log4j**:日志记录框架,用于记录程序运行时的信息。 - **SVN/Git**:版本控制系统,用于管理代码版本和协作开发。 #### 七、前端技术 - **Ajax**:异步JavaScript和XML,用于创建交互式的Web应用。 - **jQuery...

Global site tag (gtag.js) - Google Analytics