Log4j配置使用的简单教程

Log4j配置使用的简单教程Log4j是个好东西,软件运行过程中输出日志都靠他啦。不过因为日常的开发工作,都是直接使用也没有怎么仔细研究过,所以现在好好研究研究。其实Log4j还是很简单的,常用的东西不是很多,配置文件理清楚就明白了。Log4j由三个重要的组件构成:日志信息的级别(level),日志信息的输出目的地(Appender),日志信息的输出格式(Layout)。日志信息的级别从高到低为:off最高等级,用于关闭所…

大家好,欢迎来到IT知识分享网。

Log4j是个好东西,软件运行过程中输出日志都靠他啦。不过因为日常的开发工作,都是直接使用也没有怎么仔细研究过,所以现在好好研究研究。其实Log4j还是很简单的,常用的东西不是很多,配置文件理清楚就明白了。

Log4j由三个重要的组件构成:日志信息的级别(level),日志信息的输出目的地(Appender),日志信息的输出格式(Layout)。

日志信息的级别从高到低为:

  • off 最高等级,用于关闭所有日志记录。
  • fatal 指出每个严重的错误事件将会导致应用程序的退出。
  • error 指出虽然发生错误事件,但仍然不影响系统的继续运行。
  • warm 表明会出现潜在的错误情形。
  • info 一般和在粗粒度级别上,强调应用程序的运行全程。
  • debug 一般用于细粒度级别上,对调试应用程序非常有帮助。
  • all 最低等级,用于打开所有日志记录。
分别用来指定这条日志信息的重要程度;
日志信息的输出目的地指定了日志将打印到控制台还是文件中;
日志信息的输出格式则控制了日志信息的显示内容,是以什么样的格式输出的。
下面就来看看log4j是如何配置以及简单使用的。

一、log4j的配置格式

1、首先配置
配置根Logger,格式为:
log4j.rootLogger = [level] , appenderName1, appenderName2,blablabla...

这里的level就是上文说的日志信息的级别,常用的是
ERROR、WARN、INFO、DEBUG,是不区分大小写的。后面紧跟的appenderName则是日志输出目的地的Appender,Appender的名字是可以随便起的,只要在下面的配置中做对应的配置就好。
2、接下来要配置各个Appender,格式为:
log4j.appender.appenderName=【Appender日志信息输出目的地】

其中log4j提供的Appender有以下几种:
  • org.apache.log4j.ConsoleAppender(控制台),
  • org.apache.log4j.FileAppender(文件),
  • org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
  • org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
  • org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
配置相应的Appender就会输出到对应的地方。
log4j.appender.appenderName.File=日志文件保存目录(如果是输出到控制台,就不用配置这一项了)
log4j.appender.appenderName.Append=true true表示日志信息增加到指定文件中,false则将日志信息覆盖指定的文件内容,默认值是true
log4j.appender.appenderName.Threshold=DEBUG 只输出DEBUG级别以上的日志 设置日志输出级别
log4j.appender.appenderName.layout=【Layout日志布局格式】

其中log4j提供的布局格式有以下几种:
  • org.apache.log4j.HTMLLayout(以HTML表格形式布局),
  • org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
  • org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
  • org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

log4j.appender.appenderName.layout.ConversionPattern=日志输出格式

Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,如下:
  • %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 )

所以可以根据自己的需求配置自由搭配的输出格式,如:%-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] – [ %p ] %m%n

一个很简单的配置:
log4j.properties
### 设置 ###
log4j.rootLogger=debug,stdout,DDD,EEE
### 输出信息到控制台 ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 输出DEBUG 级别以上的日志到=/Users/tinybye/Documents/log4j/debug.log ###
log4j.appender.DDD=org.apache.log4j.DailyRollingFileAppender
log4j.appender.DDD.File=/Users/tinybye/Documents/log4j/debug.log
log4j.appender.DDD.Append=true
log4j.appender.DDD.Threshold=DEBUG
log4j.appender.DDD.layout=org.apache.log4j.PatternLayout
log4j.appender.DDD.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 输出ERROR 级别以上的日志到=/Users/tinybye/Documents/log4j/error.log ###
log4j.appender.EEE=org.apache.log4j.DailyRollingFileAppender
log4j.appender.EEE.File=/Users/tinybye/Documents/log4j/error.log
log4j.appender.EEE.Append=true
log4j.appender.EEE.Threshold=ERROR
log4j.appender.EEE.layout=org.apache.log4j.PatternLayout
log4j.appender.EEE.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

二、使用log4j输出日志

首先要导入log4j的依赖包,新建一个测试类Log4jText.java。然后将配置文件log4j.properties放在和测试类相同的路径的resource文件夹下。如图所示:
Log4j配置使用的简单教程

Log4jText类代码如下:

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

/**
 * Created by tinybye on 2017/3/14.
 */
public class Log4jText {
    private static Logger logger = Logger.getLogger(Log4jText.class);
    public static void main(String[] args) {
        //获取log4j配置文件
        PropertyConfigurator.configure(ClassLoader.getSystemResource("resource/log4j.properties"));
        logger.error("ERROR!!!!!");//输出error级别的日志
        logger.debug("DEBUG~");//输出debug级别的日志
    }
}

Log4j配置使用的简单教程

==========分割线==========

其实这里的代码有些问题,logger应该是定义成为final的。原因有两个:

1.出于资源利用的考虑,Logger的构造方法参数是Class,决定了Logger是根据类的结构来进行区分日志,所以一个类只要一个Logger就可以了,故static
2.final表示一种编程习惯,表示该类的Logger只是记录该类的信息,否则日志会无法提供可以令人信服的记录。

参考地址:https://blog.csdn.net/phil_jing/article/details/52789655
——2018.4.8

==========分割线==========

运行后控制台输出日志如图所示:
Log4j配置使用的简单教程

输出日志:
在配置的路径下生成两个log日志文件,不同级别的日志信息输出到了对应的log日志文件中。
Log4j配置使用的简单教程

呐,就是一些很简单的东西,日常的使用中这些肯定是足够了的。如果想更多的了解log4j的内容,可以看看下面的参考文章。

参考文章:
http://www.codeceo.com/article/log4j-usage.html

http://www.cnblogs.com/alipayhutu/archive/2012/06/21/2558249.html

http://blog.csdn.net/azheng270/article/details/2173430/

=========这里是分割线2017.08.26=========

三、整合Spring mvc

这几天在丰富自己的一个小项目,想着要把log4j集成到Spring mvc中,所以在这里简单的记述一下。
配置很简单,只要在web.xml文件中进行配置就好,配置如下:
    <!--log4j配置文件地址-->    <context-param>        <param-name>log4jConfigLocation</param-name>        <param-value>WEB-INF/classes/resource/config/log4j.properties</param-value>    </context-param>    <!--log4j监听-->    <listener>        <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>    </listener>





免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/14217.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信