【Log4J 系列】:log4j 整合SpringMVC+MyBatis 实现日志记录(01)

一、准备工作

1、工程目录

  

2、所需jar包

     <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

二、配置log4j

1、修改log4j DailyRollingFileAppender.java 这个类太大就不复制了,直接看关键性代码

由于log4j自带的DailyRollingFileAppender在根据时间来生成日志文件时控制台日志会显示Failed to rename(无法重命名),

所以没办法根据log4j提供的方法去根据日期生成日志文件,我们先去看看log4j的这个BUG

由于tomcat在运行期间会一直占用该文件,在调用该方法的时候就会抛出这个异常来,接下来我们需要创建自己的DailyRollingFileAppender类,

log4j提供的DailyRollingFileAppender类有很多方法在我们的项目中是无法重写的在这里我们去继承DailyRollingFileAppender父类FileAppender.java

文件来达到我们想要的效果

public class CmsDailyRollingFileAppender extends FileAppender

在这里只为大家演示关键性代码,PS:这段代码是在网上Copy下来的,在我们自己定义的DailyRollingFileAppender类 添加一个复制方法用来处理log4j的这个bug

boolean copy(File src, File dst) throws IOException {
          try {
           InputStream in = new FileInputStream(src);  

           OutputStream out = new FileOutputStream(dst);  

           // Transfer bytes from in to out
           byte[] buf = new byte[8192];
           int len;
           while ((len = in.read(buf)) > 0) {
            out.write(buf, 0, len);
           }
           in.close();
           out.close();
           return true;
          } catch (FileNotFoundException e) {
           LogLog.error("源文件不存在,或者目标文件无法被识别." );
           return false;
          } catch (IOException e) {
           LogLog.error("文件读写错误.");
           return false;
          }
      }

修改rollOver()方法,找到这段代码干掉替换成 copy方法保存文件

2.配置log4j.properties文件

# 这里的INFO,Stdout,D,E 看官们可以理解为变量,也可以说是输出平台,在下面我们可以看到log4j.rootLogger = info,stdout,D,E
# 控制台输出,stdout在这里就对应了上面的变量,consoleAppender 看名字也可以明白这个是控制台输出日志信息
log4j.appender.stdout = org.apache.log4j.ConsoleAppender# 这里没人的是System.out,也就是输出 out输出是黑色字体,err输出的字体是红色
log4j.appender.stdout.Target = System.out# layout是指布局,也就是说输出日志信息的格式样式,在这里我们使用的是log4j提供的
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout# 这里就是指定我们日志文件以哪一种格式去输出
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} %m%n

# INFO级别输出日志文件# 这里可以看到使用的是我们自定义的DailyRollingFileAppender.java
log4j.appender.D = com.nc.rms.log4j.CmsDailyRollingFileAppender# 指定日志输出位置${catalina.home}这个是tomcat的变量,不了解的看官可以自行脑补下
log4j.appender.D.File = ${catalina.home}/logs/rms/info/info#这个的意思是指是追加还是覆盖 默认是 true  true是追加 false是覆盖
log4j.appender.D.Append = true# 这个是指日志输出的级别在这里指定的是 INFO级别
log4j.appender.D.Threshold = INFO#这个就不做介绍了
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n#这里就根据时间来生成日志文件了,在这里为了演示定义的是每分钟生成日志文件
log4j.appender.D.DatePattern = ‘.‘yyyy-MM-dd-HH-mm‘.log‘

# ERROR级别输出日志文件# 这个跟上面一样 只不过是日志级别是 ERROR级的,方便我们直接查看系统异常信息
log4j.appender.E = com.nc.rms.log4j.CmsDailyRollingFileAppender
log4j.appender.E.File =${catalina.home}/logs/rms/error/error
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
log4j.appender.E.DatePattern = ‘.‘yyyy-MM-dd-HH-mm‘.log‘
# 记录日志至数据库#
log4j.appender.db=com.nc.rms.log4j.JndiDSAppender# 这玩意就是每次缓存多少条数据然后插入数据库,为了演示这里设置为1
log4j.appender.db.BufferSize=1# 这里使用的是tomcat的数据源log4j.appender.db.jndiName=java:comp/env/jdbc/DefaultDS# 看名字也该明白这里是定义Sql语句的啦
log4j.appender.db.sql=insert into my_log (ID,DATE,MESSAGE,USER_NAME) values (REPLACE(UUID(), ‘-‘, ‘‘),‘%d{yyyy-MM-dd HH\:mm\:ss}‘,‘%m‘,‘%X{userName}‘)
log4j.appender.db.layout=org.apache.log4j.PatternLayout# 这里定义的哪些包下的日志信息需要记录到数据库当中
log4j.logger.com.nc.rms.manage.web=info,db
log4j.logger.com.nc.rms.service=info,db
log4j.logger.com.nc.rms.dao=info,db
时间: 2024-11-10 16:07:28

【Log4J 系列】:log4j 整合SpringMVC+MyBatis 实现日志记录(01)的相关文章

模块化服务化原框架整合Springmvc+mybatis+shiro+bootstrap+html5

源码地址获取  1. 使用阿里巴巴Druid连接池(高效.功能强大.可扩展性好的数据库连接池.监控数据库访问性能.支持Common-Logging.Log4j和JdkLog,监控数据库访问) 2. 提供高并发JMS消息处理机制3. 所有功能模块化.所有模块服务化.所有服务原子化的方式,提供可拓展的服务模型,使程序稳定运行,永不宕机4. 提供Wink Rest.Webservice服务,故可作为独立服务平台部署 框架整合: Springmvc + Mybatis + Shiro(权限) + RES

java最新框架整合 springmvc+mybatis+shiro+maven 代码生成器

1. 使用阿里巴巴Druid连接池(高效.功能强大.可扩展性好的数据库连接池.监控数据库访问性能.支持Common-Logging.Log4j和JdkLog,监控数据库访问) 2. 提供高并发JMS消息处理机制 3. 所有功能模块化.所有模块服务化.所有服务原子化的方式,提供可拓展的服务模型,使程序稳定运行,永不宕机 4. 提供Wink Rest.Webservice服务,故可作为独立服务平台部署 框架整合: Springmvc + Mybatis + Shiro(权限) + REST(服务)

java框架整合Springmvc+mybatis+shiro+lucene+rest+webservice+maven

1. 使用阿里巴巴Druid连接池(高效.功能强大.可扩展性好的数据库连接池.监控数据库访问性能.支持Common-Logging.Log4j和JdkLog,监控数据库访问) 2. 提供高并发JMS消息处理机制 3. 所有功能模块化.所有模块服务化.所有服务原子化的方式,提供可拓展的服务模型,使程序稳定运行,永不宕机 4. 提供Wink Rest.Webservice服务,故可作为独立服务平台部署 框架整合: Springmvc + Mybatis + Shiro(权限) + REST(服务)

java框架整合Springmvc+mybatis+shiro+lucene+rest+webser

框架整合: Springmvc + Mybatis + Shiro(权限) + REST(服务) + WebService(服务) + JMS(消息) + Lucene(搜搜引擎) + Quartz(定时调度) + Bootstrap Html5(支持PC.IOS.Android) 文档源码咨询2042849237 系统模块: 用户管理: 用户信息管理(添加.删除.修改.用户授权.用户栏目管理.查询等) 用户组管理(添加.删除.修改.用户组栏目授权,栏目授权.查询.用户组人员添加查询等) 用户角

企业级框架整合Springmvc+mybatis+restful+bootstrap

框架简介--主要定位于互联网企业架构,已内置企业信息化系统的基础功能和高效的代码生成工具,包括:系统权限组件.数据权限组件.数据字典组件.核心工具 组件.视图操作组件.工作流组件组件.代码生成等.采用分层设计.双重验证.提交数据安全编码.密码加密.访问验证.数据权限验证. 是一个分布式的框架,提供项目模块化.服务化.热插拔的思想,高度封装安全性的Java EE快速开发平台. 本身集成Dubbo服务管控.Zookeeper注册中心.Redis分布式缓存技术.FastDFS分布式文件系统.Activ

基于springMVC+mybatis的实践记录

目前在做一个项目用到springMVC+mybatis,由于之前没学过,上手有点难,因此写下随笔记录下: 写了四个接口 第一个接口:GET请求,查询返回列表 查找 专户报告列表 -----GEThttp://localhost:8080/fee/investWeeklyReport/getByAccoutId 通过postman 模拟各种参数 { "code": 0, "message": "成功", "data": { &q

【SSO单点系列】:CAS4.0 CAS整合SpringMVC+MyBatis实现数据库校验(04)

一.准备所需jar包 cas\WEB-INF\lib中加入 c3p0-0.9.1.2.jar包.mysql-connector-java-5.1.21.jar包和cas-server-support-jdbc-4.0.0.jar包. c3p0的jar包和mysql驱动的jar包可以在maven上拉下来, cas-server-support-jdbc-4.0.0.jar 这个jar包可以在cas-server-4.0.0\modules目录下找到 二.Cas-Server(服务端)自定义验证规则

SSM框架 SSM项目源码 SSM源码 下载 java框架整合Springmvc+mybatis+shiro+bootstrap

获取[下载地址]  QQ: 313596790A 调用摄像头拍照,自定义裁剪编辑头像,头像图片色度调节B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,快速开发利器)+快速表单构建器 freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本,处理类,service等完整模块C 集成阿里巴巴数据库连接池druid  数据库连接池  阿里巴巴的 druid.Druid在监控.可扩展性.稳定性和性能方面都有明显的优势D 集成安全权限框架shiro  Shir

【MyBatis系列】:SpringMvc+MyBatis之初始化建表(01)

一.工程目录 二.定义系统初始化核心类 1.com.system.utils.service.SystemInitService package com.system.utils.service; import javax.servlet.ServletContext; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import org.simpleframework.xml.Serial