Log4j2

原创 2016年01月24日 14:11:37

准备阶段:
1.去Log4j官网下载jar包
2.将log4j-core-xx.jar,log4j-api-xx.jar两个包导入到项目中

知识点:
第一个例子

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class Hello {

private static Logger logger = (Logger) LogManager.getLogger(Hello.class.getName());

public void hello(){
    logger.trace("trace");
    logger.debug("debug");
    logger.info("info");
    logger.warn("warn");
    logger.error("error");
    logger.fatal("fatal");
}

public static void main(String[] args) {
    new Hello().hello();
}

}

日志级别分为:trace,debug,info,warn,error,fatal,等级递增
配置文件有两种形式:xml,properties
1.配置文件 log4j2.xml(放在classpath下,classpath根目录是src目录)

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
    <Console name="Console" target="SYSTEM_OUT">
        <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
    </Console>
</Appenders>
<Loggers>
    <Root level="trace">
        <AppenderRef ref="Console" />
    </Root>
</Loggers>
</Configuration>

先简单介绍一下配置文件。

  1)configuration,然后有两个子节点:appenders和loggers(都是复数,意思就是可以定义很多个appender和logger了)(如果想详细的看一下这个xml的结构,可以去jar包下面去找xsd文件和dtd文件)

  2)appenders:这个下面定义的是各个appender,就是输出了,先看这个例子,只有一个Console,这些节点可不是随便命名的,Console就是输出控制台的意思。然后就针对这个输出设置一些属性,这里设置了PatternLayout就是输出格式了

  3)loggers下面会定义许多个logger,这些logger通过name进行区分,来对不同的logger配置不同的输出,方法是通过引用上面定义的logger,注意,appender-ref引用的值是上面每个appender的name,而不是节点名称。

当我们要定义多个logger时 是这样定义的

<Loggers>
    <logger name="log4j.Hello" level="trace" additivity="true">
        <appenderRef ref="Console" />
    </logger>
    <Root level="error">
        <AppenderRef ref="Console"></AppenderRef>
        <appenderRef ref="MyFile"></appenderRef>
    </Root>
</Loggers>

Root相当于根Logger,当在配置文件里没有明确定义logger,而在类文件里创建了Logger,则此logger则会默认使用Root。如果不向使用Root,则明确定义新Logger,name则要与类名一致(Hello.java在log4j的包里)。(注意一点,包继承?)

2.log4j.properties
log4j.rootLogger = INFO,appenderName
log4j.appender.appenderName = className
log4j.appender.appenderName.layout=org.apache.log4j.PatternLayout
log4j.appender.appenderName.layout.ConversionPattern=MINAServer Logger–>%5p{%F:%L}-%m%n

className常用类:
org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

layout常取值:
org.apache.log4j.HTMLLayout(以HTML表格形式布局)
org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等信息)

1、配置根Logger:

log4j.rootLogger = [ level ] , appenderName1, appenderName2, …
log4j.additivity.org.apache=false:表示Logger不会在父Logger的appender里输出,默认为true。
level :设定日志记录的最低级别,可设的值有OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别,Log4j建议只使用中间四个级别。通过在这里设定级别,您可以控制应用程序中相应级别的日志信息的开关,比如在这里设定了INFO级别,则应用程序中所有DEBUG级别的日志信息将不会被打印出来。
appenderName:就是指定日志信息要输出到哪里。可以同时指定多个输出目的地,用逗号隔开。
例如:log4j.rootLogger=INFO,A1,B2,C3

2、配置日志信息输出目的地(appender):

log4j.appender.appenderName = className
appenderName:自定义appderName,在log4j.rootLogger设置中使用;
className:可设值如下:
(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(将日志信息以流格式发送到任意指定的地方)
(1)ConsoleAppender选项:
Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Target=System.err:默认值是System.out。
(2)FileAppender选项:
Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Append=false:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。
File=D:/logs/logging.log4j:指定消息输出到logging.log4j文件中。
(3)DailyRollingFileAppender选项:
Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Append=false:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。
File=D:/logs/logging.log4j:指定当前消息输出到logging.log4j文件中。
DatePattern=’.’yyyy-MM:每月滚动一次日志文件,即每月产生一个新的日志文件。当前月的日志文件名为logging.log4j,前一个月的日志文件名为logging.log4j.yyyy-MM。
另外,也可以指定按周、天、时、分等来滚动日志文件,对应的格式如下:
1)’.’yyyy-MM:每月
2)’.’yyyy-ww:每周
3)’.’yyyy-MM-dd:每天
4)’.’yyyy-MM-dd-a:每天两次
5)’.’yyyy-MM-dd-HH:每小时
6)’.’yyyy-MM-dd-HH-mm:每分钟
(4)RollingFileAppender选项:
Threshold=WARN:指定日志信息的最低输出级别,默认为DEBUG。
ImmediateFlush=true:表示所有消息都会被立即输出,设为false则不输出,默认值是true。
Append=false:true表示消息增加到指定文件中,false则将消息覆盖指定的文件内容,默认值是true。
File=D:/logs/logging.log4j:指定消息输出到logging.log4j文件中。
MaxFileSize=100KB:后缀可以是KB, MB 或者GB。在日志文件到达该大小时,将会自动滚动,即将原来的内容移到logging.log4j.1文件中。
MaxBackupIndex=2:指定可以产生的滚动文件的最大数,例如,设为2则可以产生logging.log4j.1,logging.log4j.2两个滚动文件和一个logging.log4j文件。

3、配置日志信息的输出格式(Layout):

log4j.appender.appenderName.layout=className
className:可设值如下:
(1)org.apache.log4j.HTMLLayout(以HTML表格形式布局)
(2)org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
(3)org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
(4)org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

(1)HTMLLayout选项:
LocationInfo=true:输出java文件名称和行号,默认值是false。
Title=My Logging: 默认值是Log4J Log Messages。
(2)PatternLayout选项:
ConversionPattern=%m%n:设定以怎样的格式显示消息。

格式化符号说明:

%p:输出日志信息的优先级,即DEBUG,INFO,WARN,ERROR,FATAL。
%d:输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,如:%d{yyyy/MM/dd HH:mm:ss,SSS}。
%r:输出自应用程序启动到输出该log信息耗费的毫秒数。
%t:输出产生该日志事件的线程名。
%l:输出日志事件的发生位置,相当于%c.%M(%F:%L)的组合,包括类全名、方法、文件名以及在代码中的行数。例如:test.TestLog4j.main(TestLog4j.java:10)。
%c:输出日志信息所属的类目,通常就是所在类的全名。
%M:输出产生日志信息的方法名。
%F:输出日志消息产生时所在的文件名称。
%L::输出代码中的行号。
%m::输出代码中指定的具体日志信息。
%n:输出一个回车换行符,Windows平台为”rn”,Unix平台为”n”。
%x:输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
%%:输出一个”%”字符。
另外,还可以在%与格式字符之间加上修饰符来控制其最小长度、最大长度、和文本的对齐方式。如:
1) c:指定输出category的名称,最小的长度是20,如果category的名称长度小于20的话,默认的情况下右对齐。
2)%-20c:”-“号表示左对齐。
3)%.30c:指定输出category的名称,最大的长度是30,如果category的名称长度大于30的话,就会将左边多出的字符截掉,但小于30的话也不会补空格。

参考:http://www.cnblogs.com/ITtangtang/p/3926665.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

使用log4j2实现日志数据脱敏

  • 2017年05月08日 23:15
  • 5KB
  • 下载

Log4j 2 同时输出日志到控制台和文件

目标 Log4j 2 同时输出日志到控制台和文件。方案给同一个 logger 绑定一个 console appender 和一个 file appender。即类似于这样的形式:rootLo...

log4j 2使用教程

  • 2016年01月10日 15:28
  • 1.5MB
  • 下载

Log4j2使用案例

  • 2015年10月02日 04:37
  • 38KB
  • 下载

Log4j2 + Maven的配置文件示例详解

一、配置Maven:pom.xml UTF-8 2.6.2

log4j-2.0-alpha2

  • 2012年09月20日 09:47
  • 2.64MB
  • 下载

Log4j2异步写日志源码

  • 2017年06月27日 14:13
  • 2KB
  • 下载

在web应用中使用Log4j 2

Using Log4j 2 inWeb Applications(在web应用中使用Log4j 2) 来源:http://logging.apache.org/log4j/2.x/manual/web...

log4j2配置多个日志级别

  • 2017年11月15日 11:47
  • 4KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Log4j2
举报原因:
原因补充:

(最多只允许输入30个字)