spring项目log4j使用入门

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

时间: 2024-08-08 13:47:57

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

Spring入门案例 idea创建Spring项目

spring入门案例 idea创建spring项目 Spring介绍 Spring概述 Spring是一个开源框架,Spring是2003年兴起的轻量级java开发框架,由Rod Johnson 在其著作 Expert One-On-One J2EE Development and Design 中阐述的部分理念和原形衍生而来.它是为了解决企业级开发的复杂性而创建的.Spring使用基本的javaBaen来完成以前只可能由EJB完成的事情,然而Spring的用途不仅限于服务器端的开发,从简单性.

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

让我们先回顾下本系列的前3篇博客: Spring入门(一):创建Spring项目 Spring入门(二):自动化装配bean Spring入门(三):通过JavaConfig装配bean 1.为什么要使用Maven? 之前我们新建的项目,项目所要依赖的第三方jar包都在项目的类路径下(通常为lib目录),如下所示: 使用这种方式,我们无法知道第三方类库的依赖关系,比如导入一个特定的jar包时,可能此jar包还依赖于其他的jar包,其他的jar包又依赖于更多的jar包,这也是我们平常遇到的Clas

spring中log4j的使用---转载

原文链接:http://www.codeceo.com/article/log4j-usage.html 日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录.在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包. 一.入门实例 1.新建一个JAva工程,导入包log4j-1.2.17.jar,整个工程最终目录如下 2.src同级创建并设置log4j.properties ### 设

从零开始--Spring项目整合(2)整合SpringMVC

1.pom.xml 定义版本 <properties> <spring.version>4.2.7.RELEASE</spring.version> <jackson.version>2.6.7</jackson.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> 2.pom.xml

spring配置log4j

1.配置基本的springMVC+hibernate环境.网上有很多这种例子. 2.需要使用log4j,首先就要在web.xml中配置log4j.方法有两种: 1.我们可以自己写一个servlet,服务器启动的时候自动加载,让该servlet加载log4j的配置文件(properties或者xml文件),这种方法百度百科讲log4j有详细说明. 2.加入spring自带的关于log4j的监听器.个人推荐使用第二种方法. 在web.xml文件中的配置为: <!-- Spring的log4j监听器*

Spring中IoC的入门实例

Spring中IoC的入门实例 Spring的模块化是很强的,各个功能模块都是独立的,我们可以选择的使用.这一章先从Spring的IoC开始.所谓IoC就是一个用XML来定义生成对象的模式,我们看看如果来使用的. 数据模型 1.如下图所示有三个类,Human(人类)是接口,Chinese(中国人)是一个子类,American(美国人)是另外一个子类. 源代码如下: package cn.com.chengang.spring;public interface Human {void eat();

项目log4j日志管理详解

项目log4j日志管理详解 log4j日志系统在项目中重要性在这里就不再累述,我们在平时使用时如果没有特定要求,只需在log4j.properties文件中顶入输出级别就行了.如果要自定义输出文件,对于初次使用者可能会遇到一点的小麻烦.最近在项目中刚做了一个统计用户登录的日志文件,要求将用户登录到某个模块的信息输出到login.log中,每天生成一个已日期命名的该类文件,现share出来. 1.Log4j下载 在apache网站:jakarta.apache.org/log4j 可以免费下载到L

Spring整合log4j日志组件(转)

Log4j是Apache的一个开放源代码项目,通过使用Log4j,控制日志信息输送的目的地可以为控制台.文件.数据库.GUI组件.甚至是套接口服务器.NT的事件记录器.UNIX Syslog守护进程等:可以控制每一条日志的信息内容和信息输出格式:通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程:甚至还可以在不需要修改业务逻辑代码.重启web服务,只需要通过一个修改配置文件就可以实现控制项目的日志动作. 首先,日志的级别有:OFF .FATAL .ERROR.WARN.INFO.

实训随笔:从零开始Spring项目

Spring Boot是什么 SpringBoot是伴随着Spring4.0诞生的: 从字面理解,Boot是引导的意思,SpringBoot帮助开发者快速搭建Spring框架: SpringBoot帮助开发者快速启动一个Web容器,它继承了原有Spring框架的优秀基因,简化了使用Spring的过程. Spring由于其繁琐的配置,一度被人认为"配置地狱",各种XML.Annotation配置,让人眼花缭乱,而且如果出错了也很难找出原因. Spring Boot更多的是采用Java C