log4j2常见配置

依赖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{参数}:输出类名称

%c org.apache.com.te.Foo org.apache.com.te.Foo
%c{1} org.apache.com.te.Foo Foo
%c{2} org.apache.com.te.Foo te.Foo
%c{1.} org.apache.com.te.Foo o.a.c.t.Foo
%c{1.1.!} org.apache.com.te.Foo o.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>  

原文地址:https://www.cnblogs.com/gavinYang/p/8168928.html

时间: 2024-10-03 15:48:28

log4j2常见配置的相关文章

Spring Boot常见配置及错误

一.SpringBoot常见配置 (1)SpingBoot与MyBatis集成时跟踪SQL语句 log4j: logger: java: sql: ResultSet: TRACE (2)日志跟踪 debug: true logging: config: classpath:log4j2/log4j2.xml (3)MyBatis集成: #mybatis配置 mybatis: #配置映射类所在包名 type-aliases-package: com.xx.it.model (数据库实体对象所在路

Log4j2常见使用示例及Syslog/Syslog-ng

准备工作 打开http://logging.apache.org/log4j/,点击左侧Download,我下载的是Apache Log4j 2 binary (zip),目前是2.0.2版本.解压后有30几个jar包,大部分是跟兼容性及移植性相关的可选组件,我们要用的是: log4j-api-2.0.2.jar log4j-core-2.0.2.jar 第一个示例程序 log4j2.xml 1 <?xml version="1.0" encoding="UTF-8&q

Hadoop常见配置

core-site.xml:   fs.default.name:hdfs://hadoop:9000 fs.tmp.dir:/usr/local/hadoop/tmp   hdfs-site.xml:   dfs.name.dir: dfs.name.edits.dir:eidts  dfs.replicationHadoop常见配置,布布扣,bubuko.com

Redis系列四 Redis常见配置

redis.conf常见配置 参数说明redis.conf 配置项说明如下:1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程  daemonize no2. 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定  pidfile /var/run/redis.pid3. 指定Redis监听端口,默认端口为6379,作者在自己的一篇博文中解释了为什么选用6379作为默认端口,因为

Java千百问_07JVM架构(017)_jvm常见配置都有哪些

点击进入_更多_Java千百问 1.jvm常见配置都有哪些 了解jvm内存模型看这里:java内存模型是什么样的 了解jvm内存管理看这里:jvm是如何管理内存的 了解jvm垃圾回收机制看这里:java垃圾回收机制是什么 jvm配置非常多,按照不同类型划分,常常用来优化jvm内存(了解jvm内存优化看这里:java内存如何优化),常见配置如下: 了解垃圾回收器看这里:java垃圾回收都有哪些方式 堆设置 -Xms=n 初始堆大小. -Xmx=n 最大堆大小. -Xmn=n 新生代大小,该配置优先

Eclipse常用快捷键与常见配置

Eclipse常用快捷键与常见配置 本文大部分内容参考<Eclipse工具使用技巧总结> 目录 常用快捷键 断点调试中的快捷键 常见配置 1 常用快捷键 Ctrl+Shift+F 格式化当前代码 Ctrl+F11 运行 F11 以调试模式运行 Ctrl+1 快速修复(最经典的快捷键,就不用多说了) Ctrl+L 定位在某行 (对于程序超过100的人就有福音了) Ctrl+/ 注释当前行,再按则取消注释 F3  跳到声明或定义的地方 F4  显示类图 Ctrl + Alt + ↓(↑) : 向下

log4j2.xml 配置

动态生成日志, 日志路径: log4j2.xml 配置如下: <?xml version="1.0" encoding="UTF-8"?> <Configuration> <Appenders> <File name="Log4jFile" append="true" fileName="logs/${date:yyyy-MM}/${date:yyyy-MM-dd}-log.

httpd常见配置

httpd常见配置 配置文件 /etc/httpd/conf/httpd.conf    主配置文件 /etc/httpd/conf.d/*.conf  辅助配置文件 配置文件语法检查及重新加载配置文件 [[email protected] conf]$ httpd -t Syntax OK [[email protected] conf]$ service httpd reload 重新载入 httpd: 修改监听的IP和Port Listen [IP:] PORT [PROTOCOL]IP

Java日志框架研究及常见配置

按照基本的定义,日志即是对程序运行过程中关键事件的记录:大体日志分为运行日志和开发日志,运行日志在业务层面记录一些关键事件,为后面的跟踪运行提供帮助,而开发日志大多数时候是调试日志,根据事件流的输出来调试程序:因为开发人员本身的关注领域,运行日志可能制作的比较少,难以达到跟踪业务流的作用,而即使是开发日志,因为开发的调试有各种技巧,即使是跟踪事件流,使用println也比日志配置简单多了,这是一个投资回报的问ti,而人经常性的是短视的,调试可能在这些人眼里根本不需要认真对待,没有前期的事件记录规