log4j是Java开发中经常使用的一个日志框架,功能强大,配置灵活,基本上可以满足项目开发中对日志功能的大部分需求。我前后经历了四五个项目,采用的日志框架都是log4j,这也反应了log4j受欢迎的程度。虽然前后接触过多次log4j,但进入的项目都是中后期,没有机会深入了解log4j。今天趁着周末,老婆出差,闲来无事,自己研究下这个日志框架在Spring框架中如何使用。

1、Spring项目中使用log4j使用

1)很显然,第一步是引入Jar包

pom文件中引入依赖的Jar包

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

2)添加log4j配置文件,配置文件的详解在第3部分

 

3)在web.xml文件中添加log4j配置监听器及初始化参数

 在web.xml中添加:
  <context-param>
       <param-name>log4jConfigLocation</param-name>
       <param-value>/WEB-INF/classes/log4j.properties</param-value>
  </context-param>
  <listener>
         <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  </listener>
 

4)在Java中使用log4j

//FF指使用log4j的类名,哪个类使用就改为哪个类名
Logger logger = Logger.getLogger(FF.class);
logger.info("hello log4j...");
 

2、配置详解

 
完活。是不是简单,但是如果要达到灵活使用log4j的目的,还需要深入了解下log4j是如何配置的。
log4j的配置文件,最少由两个部分组成:logger和appender,logger就是日志输出工具,appender决定日志输出到哪个地方,以何种格式输出。
下面是一个简单的log4j配置:
 
log4j.rootLogger=DEBUG,console,logFile
 
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.ImmediateFlush=true
log4j.appender.console.Target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%-5p] %d(%r) --> [%t] %l: %m %x %n
 
解释:
 
该配置定义一个rootLogger作为日志输出工具,日志输出级别为DEBUG,与之关联的Appender有console和logFile,console和logFile都是下面定义的Appender(名为logFile的Appender没有定义,看名字是一个把日志输出到制定文件中的Appender,可以自己定义试试)。下面对appender的配置做一个简单说明:
 
1)名为console的Appender使用的类为org.apache.log4j.ConsoleAppender。log4j提供了一下集中appender供使用
 org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),

org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
 
2)输入到该Appender的日志级别为DEBUG
在rootLogger定义了日志输出根级别,当Appender级别小于该级别时,输出级别不变;当Appender输出级别大于该级别时,子输出级别为根级别。
日志输出级别:
FATAL       0  
ERROR      3  
WARN       4  
INFO         6  
DEBUG      7
3)将产生的日志立即输出或者缓存起来等日志到一定大小再输出,true为立即输出,false为缓存起来。缓存的方式定义:
  • log4j.appender.file.BufferedIO=true
  • log4j.appender.file.BufferSize=8192
但是这样会出现日志不全的情况,比如缓存中有一定大小的日志但是这时Java虚拟机出现异常关闭,这部分日志就会丢失。
4)输出目的地配置,可以是文件,控制台等。该例子中输出为System.err,控制台把这个当错误信息输出,为红色字符;也可以设置为System.out,那么就是字体颜色就为黑色。
5)制定日志输出格式。该例子中格式为:灵活制定布局格式。log4j有四种格式:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),

org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
6)日志输出格式
 
   %m   输出代码中指定的消息
  %p   输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 
  %r   输出自应用启动到输出该log信息耗费的毫秒数 
  %c   输出所属的类目,通常就是所在类的全名 
  %t   输出产生该日志事件的线程名 
  %n   输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n” 
  %d   输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},输出类似:2002年10月18日  22 : 10 : 28 , 921

  %l   输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10 ) 
 
该例子中的日志输出格式为:[%-5p] %d(%r) --> [%t] %l: %m %x %n,那么输出样例为:
[INFO
] 2017-04-14 09:49:40,115(109) --> [http-bio-8080-exec-3]
org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:484): FrameworkServlet 'testServlet': initialization started
[INFO ] 2017-04-14 09:49:41,032(1026) --> [http-bio-8080-exec-3] test.FF.login(FF.java:18): hell log4j。。。
 
如果没有定义日志输出格式的话,默认按照如下格式输出:
Initializing servlet 'testServlet'
hell log4j。。。
显然日志格式输出信息不太够用。
 

3、总结

这篇文章只是log4j一个简单的使用入门,log4j很多功能都没有介绍,比如不同级别的日志输出到不同的文件,日志文件大小设置等。在日后工作中使用log4j时再总结补充完善。
 
 
参考 : http://www.cnblogs.com/ITEagle/archive/2010/04/23/1718365.html

spring项目log4j使用入门的更多相关文章

  1. JAVA WEB快速入门之通过一个简单的Spring项目了解Spring的核心(AOP、IOC)

    接上篇<JAVA WEB快速入门之从编写一个JSP WEB网站了解JSP WEB网站的基本结构.调试.部署>,通过一个简单的JSP WEB网站了解了JAVA WEB相关的知识,比如:Ser ...

  2. Spring入门(一):创建Spring项目

    本篇博客作为Spring入门系列的第一篇博客,不会讲解什么是Spring以及Spring的发展史这些太理论的东西,主要讲解下如何使用IntelliJ IDEA创建第一个Spring项目以及通过一个示例 ...

  3. Spring入门案例 idea创建Spring项目

    spring入门案例 idea创建spring项目 Spring介绍 Spring概述 Spring是一个开源框架,Spring是2003年兴起的轻量级java开发框架,由Rod Johnson 在其 ...

  4. Spring入门(四):使用Maven管理Spring项目

    让我们先回顾下本系列的前3篇博客: Spring入门(一):创建Spring项目 Spring入门(二):自动化装配bean Spring入门(三):通过JavaConfig装配bean 1.为什么要 ...

  5. Spring 核心概念以及入门教程

    初始Spring 在学习Spring之前我们首先要了解一下企业级应用.企业级应用是指那些为商业组织,大型企业而创建并部署的解决方案及应用. 这些大型企业级应用的结构复杂,涉及的外部资源众多,事务密集, ...

  6. Spring MVC 教程,快速入门,深入分析

    http://elf8848.iteye.com/blog/875830/ Spring MVC 教程,快速入门,深入分析 博客分类: SPRING Spring MVC 教程快速入门  资源下载: ...

  7. Spring MVC+Spring+Mybatis+MySQL(IDEA)入门框架搭建

    目录 Spring MVC+Spring+Mybatis+MySQL(IDEA)入门框架搭建 0.项目准备 1.数据持久层Mybatis+MySQL 1.1 MySQL数据准备 1.2 Mybatis ...

  8. spring中log4j的使用---转载

    原文链接:http://www.codeceo.com/article/log4j-usage.html 日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供 ...

  9. spring boot(一):入门篇

    构建微服务:Spring boot 入门篇 什么是spring boot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框 ...

随机推荐

  1. Django之Model世界

    Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数 ...

  2. JQuery实现Ajax跨域访问--Jsonp原理

    JavaScript是一种在Web开发中经常使用的前端动态脚本技术.在JavaScript中,有一个很重要的安全性限制,被称为“Same-Origin Policy”(同源策略).这一策略对于Java ...

  3. Robot Framework自动化测试环境部署

    文档版本:v1.0 作者:令狐冲 如有问题请发邮件到:1146009864@qq.com 使用Robot Framework框架(以下简称RF)来做自动化测试. 模块化设计 1.所需环境一览表 软件 ...

  4. 强大的健身软件——Keep

    Keep是一款具有社交属性的健身工具类产品.用户可利用碎片化的时间,随时随地选择适合自己的视频健身课程,进行真人同步训练.完成后还可以"打卡"晒成就.   你可根据器械.部位.难度 ...

  5. SEO-搜索引擎高级搜索指令

    搜索引擎高级搜索指令 1.双引号 把搜索词放在双引号中,代表完全匹配搜索,也就是说搜索结果返回的页面包含双引号中出现的所有的词,连顺序也必须完全匹配.bd和Google 都支持这个指令.例如搜索: & ...

  6. Android开发使用的常见第三方框架

    1.SlidingMenu 官网:https://github.com/jfeinstein10/SlidingMenu 网友使用:http://blog.csdn.net/yangyu2012122 ...

  7. jump堡垒机配置使用

    一.用户管理 1)添加用户 点击用户管理 —> 查看用户 —> 添加用户 输入要添加的用户名,姓名,权限,Mail,并且发送邮件 —> 保存 查看添加的用户 查看用户邮件 邮件中包含 ...

  8. 解决华为手机不打印Log信息的问题

    在之前安装了Android Studio后,发现了一个很苦恼的事情,就是在程序中的写Log语句,不能正常的在Logcat中打印出来,这对于解决程序bug真是一刀切断,让人无从下手,在各种尝试后,首先我 ...

  9. 关于jstl的问题:The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar files deployed

    Current sofeware:java Eclipse ee 4.5.2 + Tomcat 6.0 Question: 在tomcat中部署好了我的项目,然后发布后没有报错.但是当在浏览器打开的时 ...

  10. Unity 3D Framework Designing(1)—— MVVM 模式的设计和实施(Part 1)

    初识 MVVM 谈起 MVVM 设计模式,可能第一映像你会想到 WPF/Sliverlight,他们提供了的数据绑定(Data Binding),命令(Command)等功能,这让 MVVM 模式得到 ...