- 浏览: 151054 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
sutongxuevip:
只更改driver的话,url中你需要指定时区等信息的
关于最新版MySQL的jdbc驱动包名(路径)引发的问题 -
sutongxuevip:
指定下maven中的mysql版本就不会出现这个问题了
关于最新版MySQL的jdbc驱动包名(路径)引发的问题
在上几篇文章我们完成了项目创建,展示了对SpringMVC和MyBatis框架的集成,这里准备借添加日志模块的机会,回顾下Log4j相关的东西。
第一步:回顾Log4j
谈到我们在Java程序中经常用的日志,Log4j应该是耳熟能详了。这里先提下slf4j,英文全名是Simple Logging Facade for Java,直面意思是:Java的简单日志门面。slf4j-api.jar,从这个名称的字面意思可以看出,就是为日志工具提供嵌入程序的接口;而slf4j-log4j12.jar可以理解成就是日志底层接口的实现,类似于中间件,一边对应底层的接口,一边可以根据偏好接入不同的日志系统。log4j.jar就是我们说的日志系统了,当然java有很多开源的日志系统,感兴趣的可以查一查,这里只说Log4j。
第二步:引入依赖
打开pom文件,在dependencies里添加下面这部分代码
然后更新项目,同时会引入如下三个有依赖关系的jar包
每个jar包的大致用途,上边已经讲了,接下来看看如何使用Log4j。
第三步:如何使用Log4j
Log4j本身支持两种文件的配置方式,一种是XML文件,一种是properties文件,这里我们只说properties的方式,先创建一个log4j.properties的文件,写入配置信息
对于上边的代码,这里讲下Log4j简单的使用重点
1.配置根Logger
level指的是日志记录的优先级,分为ALL、DEBUG、INFO、WARN、ERROR等或者自定义的级别,这个决定日志信息展示的信息颗粒密度和重要等级,如果后边没有做具体设置,这个将起到作用。console, debugFile等是设定日志信息输出策略的名字。
2.配置日志信息输出目的
这个参数是用来配置日志信息输出在哪里,常用的有这几个
当然也可以通过邮件、连接数据库等方式进行输出,也可以进行自己定义,具体可以查下相关资料。
3.配置日志信息的布局
这个参数是用来设置采取什么布局样式,常用的有以下几种
我们一般都是采用PatternLayout的格式来自己定义日志信息格式。
4.输出格式设置
这个类似于C语言的格式化打印的脚本信息,常用的几个如下
类似不同的还有很多,就不一一列述。
此外,还有要注意的是Appender选项的Threshold设定,是用来配置当前策略日志消息的输出最低层次的,还有一些选项,可以过后查查相关资料。
日志的配置信息搞定了之后,我们接下来就在程序里添加几行代码,如下
我们为了突出效果,此处只留了我们所需的代码,OK,清理构建,打包部署,然后看看运行结果怎么样。
第四步:运行结果
服务器启动之后,我们可以看到,日志系统开始工作了,部分截图如下
接着我们在浏览器输入:http://localhost:8080/demo/getUser/1、http://localhost:8080/demo/getUser/2,回车然后就可以在控制台看到以下内容
然后去D盘下的logs文件夹下,可看到这两个日志文件已经生成
好了,到此为止,我们已经成功的在系统中添加了日志功能。
第一步:回顾Log4j
谈到我们在Java程序中经常用的日志,Log4j应该是耳熟能详了。这里先提下slf4j,英文全名是Simple Logging Facade for Java,直面意思是:Java的简单日志门面。slf4j-api.jar,从这个名称的字面意思可以看出,就是为日志工具提供嵌入程序的接口;而slf4j-log4j12.jar可以理解成就是日志底层接口的实现,类似于中间件,一边对应底层的接口,一边可以根据偏好接入不同的日志系统。log4j.jar就是我们说的日志系统了,当然java有很多开源的日志系统,感兴趣的可以查一查,这里只说Log4j。
第二步:引入依赖
打开pom文件,在dependencies里添加下面这部分代码
<!-- ============== log begin ============== --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.25</version> </dependency> <!-- ============== log end ============== -->
然后更新项目,同时会引入如下三个有依赖关系的jar包
每个jar包的大致用途,上边已经讲了,接下来看看如何使用Log4j。
第三步:如何使用Log4j
Log4j本身支持两种文件的配置方式,一种是XML文件,一种是properties文件,这里我们只说properties的方式,先创建一个log4j.properties的文件,写入配置信息
### set log levels ### log4j.rootLogger = INFO, console, debugFile, errorFile ### 输出到控制台 ### log4j.appender.console = org.apache.log4j.ConsoleAppender ##这个不指定默认是System.out,指定输出控制台 log4j.appender.console.Target = System.out ##输出INFO级别以上的日志 log4j.appender.console.Threshold = INFO ##布局模式,自己灵活指定 log4j.appender.console.layout = org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern = [framework][%d{ABSOLUTE}-%l][%p]:%m %n ### 保存日志内容到具体文件 ### ##输出到每天一个独立文件 log4j.appender.debugFile = org.apache.log4j.DailyRollingFileAppender ##输出DEBUG级别以上的日志 log4j.appender.debugFile.Threshold = DEBUG ##异常日志文件路径,文件名称方案 log4j.appender.debugFile.File = D:/logs/log.log log4j.appender.debugFile.DatePattern = '.'yyyy-MM-dd-HH ##设定信息是增加而不是覆盖 log4j.appender.debugFile.Append=true #信息输出格式 log4j.appender.debugFile.layout = org.apache.log4j.PatternLayout log4j.appender.debugFile.layout.ConversionPattern = [framework][%d{ABSOLUTE}-%l][%p]:%m %n ### 保存异常信息到具体文件 ### ##输出到每天一个独立文件 log4j.appender.errorFile = org.apache.log4j.DailyRollingFileAppender ##只输出ERROR级别以上的日志内容 log4j.appender.errorFile.Threshold = ERROR ##异常日志文件路径,文件名称方案 log4j.appender.errorFile.File = D:/logs/error.log log4j.appender.errorFile.DatePattern = '.'yyyy-MM-dd-HH ##设定信息是增加而不是覆盖 log4j.appender.errorFile.Append=true #信息输出格式 log4j.appender.errorFile.layout = org.apache.log4j.PatternLayout log4j.appender.errorFile.layout.ConversionPattern = [framework][%d{ABSOLUTE}-%l][%p]:%m %n
对于上边的代码,这里讲下Log4j简单的使用重点
1.配置根Logger
og4j.rootLogger = [ level ] , console, debugFile, errorFile
level指的是日志记录的优先级,分为ALL、DEBUG、INFO、WARN、ERROR等或者自定义的级别,这个决定日志信息展示的信息颗粒密度和重要等级,如果后边没有做具体设置,这个将起到作用。console, debugFile等是设定日志信息输出策略的名字。
2.配置日志信息输出目的
log4j.appender.console = org.apache.log4j.ConsoleAppender
这个参数是用来配置日志信息输出在哪里,常用的有这几个
org.apache.log4j.ConsoleAppender(控制台显示) org.apache.log4j.FileAppender(单一文件) org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件) org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件) org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
当然也可以通过邮件、连接数据库等方式进行输出,也可以进行自己定义,具体可以查下相关资料。
3.配置日志信息的布局
log4j.appender.console.layout = org.apache.log4j.PatternLayout
这个参数是用来设置采取什么布局样式,常用的有以下几种
org.apache.log4j.HTMLLayout(以HTML表格形式布局) org.apache.log4j.PatternLayout(可以自己指定布局模式) org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串) org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
我们一般都是采用PatternLayout的格式来自己定义日志信息格式。
4.输出格式设置
log4j.appender.console.layout.ConversionPattern = [framework][%d{ABSOLUTE}-%l][%p]:%m %n
这个类似于C语言的格式化打印的脚本信息,常用的几个如下
%m 输出代码中指定的消息(这个就是我们在代码中定义要打出的那部分) %n 输出一个回车换行符(Windows平台为“\r\n”,Unix平台为“\n”) %p 输出优先级(即DEBUG,INFO,WARN,ERROR,FATAL) %r 输出自应用启动到输出该log信息耗费的毫秒数 %c 输出所属的类目,通常就是所在类的全名 %t 输出产生该日志事件的线程名 %d 输出日志时间点的日期或时间(默认格式为ISO8601,也可以指定格式,如:%d{yyy MMM dd HH:mm:ss , SSS},或者直接%d{ABSOLUTE}) %l 输出日志事件的发生位置,包括类目名以及在代码中的行数。(如:test.demo.controller.TestSpringController.getUser(TestSpringController.java:40))
类似不同的还有很多,就不一一列述。
此外,还有要注意的是Appender选项的Threshold设定,是用来配置当前策略日志消息的输出最低层次的,还有一些选项,可以过后查查相关资料。
日志的配置信息搞定了之后,我们接下来就在程序里添加几行代码,如下
package test.demo.controller; import javax.annotation.Resource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import test.demo.dao.UserDAO; import test.demo.data.User; @Controller public class TestSpringController { private static final Logger logger = LoggerFactory.getLogger(TestSpringController.class); @Resource private UserDAO userDao; @ResponseBody @RequestMapping(value="/getUser/{userId}", method=RequestMethod.GET) public String getUser(@PathVariable Integer userId) { User user = userDao.getUserById(userId); logger.info("这个用户的名字是:{},年龄是{}" , user.getName(), user.getAge()); logger.error("这个只是个测试:{}" , user.getName()); return user.getName() + " , Hello Controller!"; } }
我们为了突出效果,此处只留了我们所需的代码,OK,清理构建,打包部署,然后看看运行结果怎么样。
第四步:运行结果
服务器启动之后,我们可以看到,日志系统开始工作了,部分截图如下
接着我们在浏览器输入:http://localhost:8080/demo/getUser/1、http://localhost:8080/demo/getUser/2,回车然后就可以在控制台看到以下内容
[framework][17:04:28,801-com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:785)][INFO]:{dataSource-1} inited [framework][17:04:28,972-test.demo.controller.TestSpringController.getUser(TestSpringController.java:27)][INFO]:这个用户的名字是:tom,年龄是2 [framework][17:04:28,972-test.demo.controller.TestSpringController.getUser(TestSpringController.java:28)][ERROR]:这个只是个测试:tom [framework][17:04:44,446-test.demo.controller.TestSpringController.getUser(TestSpringController.java:27)][INFO]:这个用户的名字是:jerry,年龄是1 [framework][17:04:44,446-test.demo.controller.TestSpringController.getUser(TestSpringController.java:28)][ERROR]:这个只是个测试:jerry
然后去D盘下的logs文件夹下,可看到这两个日志文件已经生成
好了,到此为止,我们已经成功的在系统中添加了日志功能。
发表评论
-
springBoot+security+mybatis 实现用户权限的数据库动态管理
2018-08-22 21:52 14570一、Spring Security 应用的 ... -
Spring回顾之八 —— Quartz在集群、分布式系统中的应用
2017-05-02 15:52 7816在Quartz的使用中, ... -
Spring回顾之七 —— 和Quartz一起进行定时任务
2017-04-27 16:31 6175Quartz是一个由java ... -
Spring回顾之六 —— JPA,另一种数据方案的尝试
2017-03-29 17:45 3020JPA,即Java持久性API(Java Persis ... -
Spring回顾之五 —— 测试,JUnit与SpringTest的完美结合
2017-03-22 17:24 25073没有测试的程序,是不完整的,每一个从事写程序的人员,都 ... -
使用Log4j时,配置ConversionPattern(日志显示格式)遇到的问题
2017-03-21 18:03 3413log4j:ERROR Category option &qu ... -
Eclipse:Maven相关Classpath引起的问题
2017-03-21 09:24 5130Classpath entry org.maven.eclip ... -
Eclipse下,Maven打包时忽略src路径下xml文件的问题
2017-03-20 17:57 2147javax.xml.ws.soap.SOAPFaultExce ... -
使用最新版MySQL的jdbc驱动关于时区引发的问题
2017-03-20 17:35 24981Caused by: java.sql.SQLExceptio ... -
Spring回顾之三 —— MyBatis的加盟
2017-03-20 17:03 2770本篇将介绍如何引 ... -
Spring回顾之二 —— 引入SpringMVC
2017-03-16 16:40 2309上篇笔记创建了一个maven的简单web项目,熟悉了下 ... -
Spring回顾之一 —— Maven项目的初建
2017-03-14 16:35 1062工作之余,回头看知识的时候,发现很多东西都有些生疏 ... -
加权随机算法的实现
2016-07-04 21:09 8904加权随机算法,一般用于抽奖,资源调度等场景,话不多说,上代码: ...
相关推荐
综上所述,"spring简单注解+log4j记录日志"这个主题涵盖了Spring框架中的注解使用、Log4j日志系统以及AOP的应用。通过学习这些内容,初学者可以更好地理解和实践Spring框架,同时提高代码的可维护性和调试效率。在...
2. 配置Log4j2:Spring Boot默认使用`src/main/resources/log4j2.xml`或`log4j2.json`作为Log4j2的配置文件。你可以根据需求自定义日志级别、输出格式、输出位置等。 四、Log4j2配置详解 1. 日志级别:Log4j2支持...
总之,将Spring的日志配置为Log4j,涉及到引入Log4j库、编写`log4j.properties`配置文件、以及在Spring配置文件中声明使用Log4j。理解这些步骤和配置项对于优化日志记录,排查问题以及监控系统运行状态至关重要。
Log4j 是一个功能强大且广泛使用的日志记录工具,特别是在 SSM(Spring、Spring MVC、Mybatis)整合项目中,合理地配置 Log4j 对项目的日志记录和输出至关重要。本文将详细介绍 SSM 整合中的 Log4j 配置详情,帮助...
Log4j是一个广泛使用的Java日志框架,提供灵活的日志记录功能。接下来,我们将详细讲解如何在Spring项目中配置log4j。 首先,我们需要在项目的类路径下创建一个名为`log4j.properties`或`log4j.xml`的配置文件。...
综上所述,Log4j与Spring的整合使得日志管理更加便捷,同时,Log4j丰富的配置选项和强大的功能使其成为Java日志处理的首选工具。理解并熟练运用Log4j配置,能够极大地提升开发效率和问题排查能力。在实际开发中,...
在IT行业中,Spring AOP(面向切面编程)和Log4j是两个非常重要的工具,它们在实际开发中起着至关重要...读者可以通过学习这些材料,更深入地理解Spring AOP和Log4j的结合使用,以及如何在实际项目中应用动态日志功能。
Log4j和Log4j2是两种广泛使用的Java日志框架,它们提供了灵活的日志配置和高性能的日志处理能力。本文将详细介绍如何在SpringBoot项目中配置Log4j和Log4j2。 ### SpringBoot与Log4j Log4j是Apache的一个开源项目,...
Log4j是Apache组织提供的一款广泛使用的日志框架,它允许开发者灵活地控制日志信息的输出。本文将详细讲解如何动态设置Log4j的日志级别,以满足不同场景下的需求。 首先,我们要理解日志级别的概念。Log4j提供了多...
Spring框架是Java领域广泛使用的轻量级框架,而Log4j则是日志记录领域的经典工具,提供了丰富的日志配置和管理功能。本实例结合Spring和Log4j,将为你提供一个实用的日志解决方案。 首先,我们要理解Spring是如何...
4. `log4j-slf4j-impl-2.11.2.jar`: 这是SLF4J到Log4j2的适配器,使得我们可以使用SLF4J接口,而底层的日志实现则是Log4j2。 除了这些jar包,还需要一个配置文件——`log4j2.xml`。这个XML文件定义了Log4j2的日志...
Log4j是一个广泛使用的Java日志记录框架,它允许开发者在应用程序中轻松地记录各种级别的日志信息,如DEBUG、INFO、WARN、ERROR等。在2021年底,一个重大的安全漏洞(CVE-2021-44228)被发现在Log4j2的早期版本中,...
3. **在Spring MVC中使用Log4j**:在Spring MVC的Controller或其他需要记录日志的类中,引入`org.apache.log4j.Logger`,并创建一个实例。例如: ```java import org.apache.log4j.Logger; public class ...
Log4j是Apache提供的一款广泛使用的日志框架,它提供了丰富的功能和灵活的配置,使得我们可以根据需要动态地改变日志的输出路径。本文将深入探讨如何在Log4j中实现日志输出路径的动态配置。 首先,我们要理解Log4j...
Spring框架作为Java企业级应用开发的首选,而Log4j则是广泛使用的日志记录工具,两者结合可以提供强大的日志管理能力。下面将详细阐述"spring整合log4j"的相关知识点。 首先,Log4j是Apache的一个开源项目,它为...
在Spring框架中,我们通常会结合使用Log4j来实现日志记录,因为Log4j具有高度可配置性、性能优秀和功能丰富的特点。 Log4j是Apache软件基金会的一个项目,它是一个强大的日志工具,支持多种输出格式,包括控制台、...
Log4j、Log4j2和Fastjson的安全性问题在过去曾引起广泛关注,例如Log4j2的CVE-2021-44228(也被称为Log4Shell漏洞),这是一个远程代码执行漏洞,影响了许多使用Log4j2的系统。这个插件可能就是为了检测和利用这些...
在项目中,我们需要修改Spring Boot的默认配置,指定使用Log4j2,并在项目的配置文件中(如`log4j2.xml`或`log4j2.json`)定义日志级别、输出格式和目标位置。 在项目中,"springBootMybatis"这个压缩包文件可能...
使用Spring时,开发者还需要注意与其他Java库的兼容性,例如JDBC驱动、ORM框架(如Hibernate、MyBatis)的jar包,以及用于日志记录的log4j.jar、log4j-api.jar和log4j-core.jar。在实际项目中,这些jar包通常会被...
在实际应用中,可以结合使用这些方法,比如在Controller层处理HTTP请求时使用SpringMVC的注解脱敏,而在日志记录层面利用`Logback`或`Log4j2`的扩展功能进行全局脱敏。 在`desensitization`这个压缩包文件中,可能...