log4j2常见配置

摘要:
参数可以是文本SimpleDateFormat字符拼接在一起,您还可以使用系统默认值%d{default}2012-11-0214:34:02781%d{ISO8601}2012-11-102T14:34:02781%d{ISO 8601_BASIC}20121102T143402781%d{ABSOLUTE}14:34:02781%d{DATE 2012年11月2日14:34:0278 1%d{COMPACT}2012年1102143402781%d{HH:mm:ss,ss}14:346:02781%d{ddMMMyyyHH:mm:ss}2012月2日14时34分:2781}1351866842%d{UNIX_MILLIS}1351866842781%l和%l:输出行号,%l输出完整的包路径和行号,%l仅输出行号。},即,使用标签替换的字符串替换级别。例如,%level{WARN=W,DEBUG=D,ERROR=E,TRACE=T,INFO=I},然后是logger。warn输出W等log4j2.xml配置文件˂!
依赖jar:
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.9.1</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.9.1</version>
</dependency>
在log4j2中配置文件可以为.xml,.json或者.jsn,默认情况下,系统选择configuration文件的优先级如下:
  1. log4j-test.json或者log4j-test.jsn
  2. log4j2-test.xml
  3. log4j.json或者log4j.jsn
  4. log4j2.xml 
 
日志级别 从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出。
 
Appender 为日志输出目的地,常用的三种
  • Console:将输出到控制台
  • File:将结果输出到一个指定文件中。
  • RollingFile:和File一样,RollingFile则较为灵活,可以按照文件大小拆分文件
PatternLayout 控制输出内容的节点,包括类名、时间、行号、日志级别、序号等都可以控制,同时还可以指定日志格式,可以使用正则表达式处理输出结果。用\输出,用%%输出%
%c,%c{参数},%C{参数},%class{参数}:输出类名称
%corg.apache.com.te.Fooorg.apache.com.te.Foo
%c{1}org.apache.com.te.FooFoo
%c{2}org.apache.com.te.Foote.Foo
%c{1.}org.apache.com.te.Fooo.a.c.t.Foo
%c{1.1.!}org.apache.com.te.Fooo.a.!.!.Foo
%c{.}org.apache.com.te.Foo….Foo
%d{参数}:输出时间。参数可以是text.SimpleDateFormat字符拼接而成,也可以使用系统默认
%d{DEFAULT}2012-11-02 14:34:02,781
%d{ISO8601}2012-11-02T14:34:02,781
%d{ISO8601_BASIC}20121102T143402,781
%d{ABSOLUTE}14:34:02,781
%d{DATE}02 Nov 2012 14:34:02,781
%d{COMPACT}20121102143402781
%d{HH:mm:ss,SSS}14:34:02,781
%d{dd MMM yyyy HH:mm:ss,SSS}02 Nov 2012 14:34:02,781
%d{HH:mm:ss}{GMT+0}18:34:02
%d{UNIX}1351866842
%d{UNIX_MILLIS}1351866842781
%l 和 %L:输出行号,%l 输出完整的包路径及行号,%L 仅输出行号。此参数影响日志输出性能
%m或%msg或%message:输出日志信息
%M或%method:输出方法名
%level{参数1}:不写参数时,输出日志级别。第一个参数用来替换日志信息的级别,格式为:{level=label, level=label, …},即使用label代替的字符串替换level,例如 %level{WARN=W, DEBUG=D, ERROR=E, TRACE=T, INFO=I},则logger.warn输出W等等
 
 
log4j2.xml 配置文件
<?xml version="1.0" encoding="UTF-8"?>    
<configuration status="debug">  
 
     <!-- 变量配置 -->
    <Properties>
        <Property name="root_path">${sys:catalina.home}</Property>
    </Properties> 
 
    <!--先定义所有的appender -->  
    <appenders>  
        <!--这个输出控制台的配置 -->  
        <Console name="Console" target="SYSTEM_OUT">  
            <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->  
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>  
            <!--这个都知道是输出日志的格式 -->  
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %c %L %M - %msg%xEx%n"/>  
        </Console>  
           
        <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用 -->  
        <!--append为TRUE表示消息增加到指定文件中,false表示消息覆盖指定的文件内容,默认值是true -->  
        <File name="log" fileName="${root_path}/logs/logdemo.log" append="true">  
            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %c %L %M - %msg%xEx%n"/>  
        </File>  
           
        <!--添加过滤器ThresholdFilter,可以有选择的输出某个级别以上的类别  onMatch="ACCEPT" onMismatch="DENY"意思是匹配就接受,否则直接拒绝  -->  
        <File name="ERROR" fileName="${sys:catalina.home}/logs/logdemo_error.log">  
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>  
            <PatternLayout pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>  
        </File>  
   
        <!--这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年-月-日建立的文件夹下面并进行压缩,作为存档 -->  
        <RollingFile name="RollingFile" fileName="${sys:catalina.home}/logs/logdemo_web.log"  
                     filePattern="${sys:catalina.home}/logs/$${date:yyyy-MM-dd}/logdemo_web-%d{yyyy-MM-dd}-%i.log.gz">  
            <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>  
            <!-- 设置日志文件大小超过多少后开始进行压缩 单位:KB/MB/GB -->
            <SizeBasedTriggeringPolicy size="10MB"/>  
            <!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,超过后则会覆盖之前的,这里设置了20 -->
            <DefaultRolloverStrategy max="20"/>
        </RollingFile>  

<!--每分钟产生一个文件,历史的日志会自动存入按年-月-日建立的文件夹下面并进行压缩,作为存档 -->  
<RollingFile name="DailyRollingFile" fileName="${sys:catalina.home}/logs/logdemo_all.log"  
             filePattern="${sys:catalina.home}/logs/$${date:yyyy-MM-dd}/logdemo_all-%d{yyyy-MM-dd_HH-mm}-%i.log">               
    <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>  
           <TimeBasedTriggeringPolicy interval="1" modulate="true" />  
</RollingFile> 
    </appenders>  
       
    <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效 -->  
    <loggers>  
        <!--建立一个默认的root的logger,只有能一个root -->  
        <root level="debug">  
            <appender-ref ref="RollingFile"/>  
            <appender-ref ref="Console"/>  
            <appender-ref ref="ERROR" />  
            <appender-ref ref="log"/>  
        </root>  
       <!-- 设置指定包输出指定的日志级别 -->
        <logger name="com.gavin" level="warn"/>
    </loggers>  
</configuration>  
 

免责声明:文章转载自《log4j2常见配置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇转:C#操作摄像头bios自检时间长,显示0075错误下篇

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

相关文章

Oracle 归档日志管理

一、Oracle日志介绍 1、Oracle日志分类分三大类: Alert log files--警报日志,Trace files--跟踪日志(用户和进程)和redo log 重做日志(记录数据库的更改)。本文主要关注Oracle的重做日志。重做日志分为在线重做日志和归档重做日志。online Redo log files--在线重做日志,又称联机重做日志...

在Winform项目和Web API的.NetCore项目中使用Serilog 来记录日志信息

在我们常规的调试或者测试的时候,喜欢把一些测试信息打印在控制台或者记录在文件中,对于.netframework项目来说,我们输出控制台的日志信息习惯的用Console.WriteLine来输出查看,不过对于.netcore的项目来说,这种输出看不到任何信息了,不过即使这样,我们建议还是把一些测试的日志记录在文件中,供查看对比。本篇随笔介绍使用Serilog...

mySQL内存及虚拟内存优化设置

为了装mysql环境测试,装上后发现启动后mysql占用了很大的虚拟内存,达8百多兆。网上搜索了一下,得到高人指点my.ini。再也没见再详细的了..只好打开my.ini逐行的啃,虽然英文差了点,不过多少M还是看得明的^-^ 更改后如下: innodb_buffer_pool_size=576M ->256M InnoDB引擎缓冲区占了大头,首要...

MyBatis学习(五)MyBatis-开启log4j日志

1、前言 Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地...

springboot-logback

springboot logback配置 1.pattern解析:   %d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}   带时区的时间   %level   日志级别   [%thread]   线程名   [%logger{50}:%line]    打印日志对应的方法和行数  [uuid:%X{operation_id}]   这个...

Oracle如何迁移、管理、清除Audit数据(AUD$和FGA_LOG$表)

Oracle如何迁移、管理、清除Audit数据(AUD$和FGA_LOG$表) 前言 版本:11.2.0.4.0。 Oracle 11G中没特殊要求还是要建议关闭审计功能:alter system set audit_trail = none scope=spfile  sid='*'; 由于默认审计数据的AUD$和FGA_LOG$表在system表空间,...