javaweb项目添加log4j日志

摘要:
谈到我们在Java程序中经常使用的日志,Log4j应该很熟悉。slf4j api。从这个名字的字面意思可以看出,Jar是为测井工具提供嵌入式程序的接口;而slf4j-log4j12.jar可以理解,实现是底层日志接口的实现。与中间件类似,它可以根据偏好访问不同的日志系统,同时对应于底层接口。log4j。JAR就是我们所说的日志系统。当然,Java中有许多开源日志系统,如果您感兴趣,可以查看它们。这里只提到Log4j。Console、debugFile等是日志信息输出策略的名称。

谈到我们在Java程序中经常用的日志,Log4j应该是耳熟能详了。这里先提下slf4j,英文全名是Simple Logging Facade for Java,直面意思是:Java的简单日志门面。slf4j-api.jar,从这个名称的字面意思可以看出,就是为日志工具提供嵌入程序的接口;而slf4j-log4j12.jar可以理解成就是日志底层接口的实现,类似于中间件,一边对应底层的接口,一边可以根据偏好接入不同的日志系统。log4j.jar就是我们说的日志系统了,当然java有很多开源的日志系统,感兴趣的可以查一查,这里只说Log4j。

第一步:引入依赖
    打开pom文件,在dependencies里添加下面这部分代码

Xml代码  收藏代码
  1. <!-- ============== log begin ============== -->  
  2. <dependency>  
  3.     <groupId>org.slf4j</groupId>  
  4.     <artifactId>slf4j-log4j12</artifactId>  
  5.     <version>1.7.25</version>  
  6. </dependency>  
  7. <!-- ============== log end ============== -->  


    然后更新项目,同时会引入如下三个有依赖关系的jar包
    javaweb项目添加log4j日志第2张

    每个jar包的大致用途,上边已经讲了,接下来看看如何使用Log4j。

第二步:如何使用Log4j
    Log4j本身支持两种文件的配置方式,一种是XML文件,一种是properties文件,这里我们只说properties的方式,先创建一个log4j.properties的文件,写入配置信息

Java代码  收藏代码
  1. ### set log levels ###    
  2. log4j.rootLogger = INFO, console, debugFile, errorFile  
  3.     
  4. ### 输出到控制台 ###    
  5. log4j.appender.console = org.apache.log4j.ConsoleAppender  
  6. ##这个不指定默认是System.out,指定输出控制台  
  7. log4j.appender.console.Target = System.out  
  8. ##输出INFO级别以上的日志  
  9. log4j.appender.console.Threshold = INFO  
  10. ##布局模式,自己灵活指定  
  11. log4j.appender.console.layout = org.apache.log4j.PatternLayout  
  12. log4j.appender.console.layout.ConversionPattern = [framework][%d{ABSOLUTE}-%l][%p]:%m %n  
  13.   
  14. ### 保存日志内容到具体文件 ###  
  15. ##输出到每天一个独立文件  
  16. log4j.appender.debugFile = org.apache.log4j.DailyRollingFileAppender  
  17. ##输出DEBUG级别以上的日志   
  18. log4j.appender.debugFile.Threshold = DEBUG  
  19. ##异常日志文件路径,文件名称方案  
  20. log4j.appender.debugFile.File = D:/logs/log.log  
  21. log4j.appender.debugFile.DatePattern = '.'yyyy-MM-dd-HH  
  22. ##设定信息是增加而不是覆盖  
  23. log4j.appender.debugFile.Append=true  
  24. #信息输出格式  
  25. log4j.appender.debugFile.layout = org.apache.log4j.PatternLayout  
  26. log4j.appender.debugFile.layout.ConversionPattern = [framework][%d{ABSOLUTE}-%l][%p]:%m %n  
  27.   
  28. ### 保存异常信息到具体文件 ###    
  29. ##输出到每天一个独立文件  
  30. log4j.appender.errorFile = org.apache.log4j.DailyRollingFileAppender  
  31. ##只输出ERROR级别以上的日志内容   
  32. log4j.appender.errorFile.Threshold = ERROR  
  33. ##异常日志文件路径,文件名称方案  
  34. log4j.appender.errorFile.File = D:/logs/error.log  
  35. log4j.appender.errorFile.DatePattern = '.'yyyy-MM-dd-HH  
  36. ##设定信息是增加而不是覆盖  
  37. log4j.appender.errorFile.Append=true  
  38. #信息输出格式  
  39. log4j.appender.errorFile.layout = org.apache.log4j.PatternLayout  
  40. log4j.appender.errorFile.layout.ConversionPattern = [framework][%d{ABSOLUTE}-%l][%p]:%m %n  


    对于上边的代码,这里讲下Log4j简单的使用重点
1.配置根Logger

Java代码  收藏代码
  1. og4j.rootLogger = [ level ] , console, debugFile, errorFile  


    level指的是日志记录的优先级,分为ALL、DEBUG、INFO、WARN、ERROR等或者自定义的级别,这个决定日志信息展示的信息颗粒密度和重要等级,如果后边没有做具体设置,这个将起到作用。console, debugFile等是设定日志信息输出策略的名字。
2.配置日志信息输出目的

Java代码  收藏代码
  1. log4j.appender.console = org.apache.log4j.ConsoleAppender  


    这个参数是用来配置日志信息输出在哪里,常用的有这几个

Java代码  收藏代码
  1. org.apache.log4j.ConsoleAppender(控制台显示)  
  2. org.apache.log4j.FileAppender(单一文件)  
  3. org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)  
  4. org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)  
  5. org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)  


    当然也可以通过邮件、连接数据库等方式进行输出,也可以进行自己定义,具体可以查下相关资料。
3.配置日志信息的布局

Java代码  收藏代码
  1. log4j.appender.console.layout = org.apache.log4j.PatternLayout  


    这个参数是用来设置采取什么布局样式,常用的有以下几种

Java代码  收藏代码
  1. org.apache.log4j.HTMLLayout(以HTML表格形式布局)  
  2. org.apache.log4j.PatternLayout(可以自己指定布局模式)  
  3. org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)  
  4. org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)  


    我们一般都是采用PatternLayout的格式来自己定义日志信息格式。
4.输出格式设置

Java代码  收藏代码
  1. log4j.appender.console.layout.ConversionPattern = [framework][%d{ABSOLUTE}-%l][%p]:%m %n  


    这个类似于C语言的格式化打印的脚本信息,常用的几个如下

Java代码  收藏代码
  1. %m   输出代码中指定的消息(这个就是我们在代码中定义要打出的那部分)  
  2. %n   输出一个回车换行符(Windows平台为“ ”,Unix平台为“ ”)   
  3. %p   输出优先级(即DEBUG,INFO,WARN,ERROR,FATAL)  
  4. %r   输出自应用启动到输出该log信息耗费的毫秒数   
  5. %c   输出所属的类目,通常就是所在类的全名   
  6. %t   输出产生该日志事件的线程名   
  7. %d   输出日志时间点的日期或时间(默认格式为ISO8601,也可以指定格式,如:%d{yyy MMM dd HH:mm:ss , SSS},或者直接%d{ABSOLUTE})  
  8. %l   输出日志事件的发生位置,包括类目名以及在代码中的行数。(如:test.demo.controller.TestSpringController.getUser(TestSpringController.java:40))  


    类似不同的还有很多,就不一一列述。
    此外,还有要注意的是Appender选项的Threshold设定,是用来配置当前策略日志消息的输出最低层次的,还有一些选项,可以过后查查相关资料。
    日志的配置信息搞定了之后,我们接下来就在程序里添加几行代码,如下

Java代码  收藏代码
  1. package test.demo.controller;  
  2.   
  3. import javax.annotation.Resource;  
  4.   
  5. import org.slf4j.Logger;  
  6. import org.slf4j.LoggerFactory;  
  7. import org.springframework.stereotype.Controller;  
  8. import org.springframework.web.bind.annotation.PathVariable;  
  9. import org.springframework.web.bind.annotation.RequestMapping;  
  10. import org.springframework.web.bind.annotation.RequestMethod;  
  11. import org.springframework.web.bind.annotation.ResponseBody;  
  12. import test.demo.dao.UserDAO;  
  13. import test.demo.data.User;  
  14.   
  15. @Controller  
  16. public class TestSpringController {  
  17.   
  18.     private static final Logger logger = LoggerFactory.getLogger(TestSpringController.class);    
  19.       
  20.     @Resource    
  21.     private UserDAO userDao;  
  22.       
  23.     @ResponseBody  
  24.     @RequestMapping(value="/getUser/{userId}", method=RequestMethod.GET)  
  25.     public String  getUser(@PathVariable Integer userId) {  
  26.         User user = userDao.getUserById(userId);  
  27.         logger.info("这个用户的名字是:{},年龄是{}" , user.getName(), user.getAge());   
  28.         logger.error("这个只是个测试:{}" , user.getName());  
  29.         return user.getName() + " , Hello Controller!";  
  30.     }  
  31.   
  32. }  


    我们为了突出效果,此处只留了我们所需的代码,OK,清理构建,打包部署,然后看看运行结果怎么样。

第三步:运行结果
    服务器启动之后,我们可以看到,日志系统开始工作了,部分截图如下
    javaweb项目添加log4j日志第12张

    接着我们在浏览器输入:http://localhost:8080/demo/getUser/1、http://localhost:8080/demo/getUser/2,回车然后就可以在控制台看到以下内容

Java代码  收藏代码
  1. [framework][17:04:28,801-com.alibaba.druid.pool.DruidDataSource.init(DruidDataSource.java:785)][INFO]:{dataSource-1} inited   
  2. [framework][17:04:28,972-test.demo.controller.TestSpringController.getUser(TestSpringController.java:27)][INFO]:这个用户的名字是:tom,年龄是2   
  3. [framework][17:04:28,972-test.demo.controller.TestSpringController.getUser(TestSpringController.java:28)][ERROR]:这个只是个测试:tom   
  4. [framework][17:04:44,446-test.demo.controller.TestSpringController.getUser(TestSpringController.java:27)][INFO]:这个用户的名字是:jerry,年龄是1   
  5. [framework][17:04:44,446-test.demo.controller.TestSpringController.getUser(TestSpringController.java:28)][ERROR]:这个只是个测试:jerry   


    然后去D盘下的logs文件夹下,可看到这两个日志文件已经生成
    javaweb项目添加log4j日志第14张

    好了,到此为止,我们已经成功的在系统中添加了日志功能。

免责声明:文章转载自《javaweb项目添加log4j日志》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇matlab7.0安装 win7系统详细使用方法附软件下载来看看机智的前端童鞋怎么防盗下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Spring Boot自定义log4j2日志文件

背景:因为从 Spring Boot 1.4开始的版本就要用log4j2了,支持的格式有json和xml两种格式,此次实践主要使用的是xml的格式定义日志说明。 Spring Boot 1.5.8.RELEASE引入log4j2的开发步骤如下: 1.首先把spring-boot-starter-web以及spring-boot-starter包下面的spr...

log4j日志输出到日志文件中和控制台中 +log4j配置详解

1.引入log4j的jar包 https://mvnrepository.com/,可以找到log4j的jar和依赖。 2.创建log4j.properties,并配置log4j #设置日志的级别 ,多个以,分开(没有给出的,则不会被输出) log4j.rootLogger=debug,A,R # log4j.appender.logfile.encod...

【日志框架】log4j、log4j2、logback、slf4j等常用的日志框架及门面

一、在Java程序中常用日志框架可以分为两类: 无具体实现的抽象门面框架,如:Commons Logging、SLF4J 具体实现的框架,如:Log4j,Log4j 2,Logback,Jul 二、常用日志框架之间的关系 Log4j2与Log4j1发生了很大的变化,log4j2不兼容log4j1 Commons Logging和Slf4j是日志门面(...

动态修改log4j.properties配置文件,无需重启就可以生效

1.log4j.properties自带有一个PropertyConfigurator的类,通过方法configureAndWatch实现 代码实现 import lombok.extern.slf4j.Slf4j; import org.apache.log4j.PropertyConfigurator; import java.io.FileInpu...

Spring中日志的使用(log4j)

我们在开发一般常见log4j这个日志文件,它的作用主要是把记录日志。使用在两种方式,一个是日志信息输出在控制台,另一种是把日志信息记录到指定的文件。如下是log4j.properties文件的基本内容: ### direct log messages to stdout ### log4j.appender.stdout=org.apache.log4j...

动态配置log4j2.xml日志输出文件的位置

目标:根据启动jar时传进main()的参数动态修改日志位置 一、修改启动项  MainMapLookup.setMainArguments(args);注:不要在lookup设置之前初始化log(如:private static final Logger log = LoggerFactory.getLogger(HttpServer.class);)...