`

Log4j2手册阅读随笔(Log4j2新特性)

    博客分类:
  • java
阅读更多

1.丢数据这种情况少,可以用来做审计功能。而且自身内部报的exception会被发现,但是logback和log4j不会。

2.log4j2使用了disruptor技术,在多线程环境下,性能高于logback等10倍以上。

3.(garbage free)之前的版本会产生非常多的临时对象,会造成GC频繁,log4j2则在这方面上做了优化,减少产生临时对象。尽可能少的GC

4.利用插件系统,使得扩展新的appender,filter,layout等变得容易,log4j不可以扩展  插件????

5.因为插件系统的简单性,所以在配置的时候,可以不用具体指定所要处理的类型。class

6.可以自定义level

7.Java 8 lambda support for lazy logging

8.Support for Message objects

9.对filter的功能支持的更强大

10.系统日志(Syslog)协议supports both TCP and UDP

11.利用jdk1.5并发的特性,减少了死锁的发生。

Socket LogEvent  SerializedLayout

kafka queue

 

 

一个基本的Log4j2.xml配置:

 

 

<?xml version="1.0" encoding="UTF-8"?>
<!-- 在运行时,可以动态修改配置文件,不用重启服务,在固定时长更新一次配置文件。monitorInterval设置更新配置文件时长, 单位为seconds , min senconds >= 5secondes -->
<Configuration  monitorInterval="30" >

    <Properties>
        <Property name="log.path">E:\log4j2_log\</Property>
    </Properties>

    <Appenders>
        <!-- 控制台appdener-->
        <Console name="STDOUT" target="SYSTEM_OUT">
            <PatternLayout    charset="UTF-8" pattern="%m%n"/>
        </Console>

        <!-- File appdener-->
        <File name="MyFile" fileName="logs/app.log" bufferedIO="true" >
            <PatternLayout>
                <Charset>UTF-8</Charset>
                <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
            </PatternLayout>
        </File>

        <!-- RandomAccessFile 性能高于 File-->
        <RandomAccessFile name="MyFile" fileName="logs/RandomAccessFile.log"  >
            <PatternLayout>
                <Charset>UTF-8</Charset>
                <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
            </PatternLayout>
        </RandomAccessFile>

        <!--<RollingFile></RollingFile>-->

        <!--
            注意:一般情况下都使用RollingRandomAccessFile 。
            RollingRandomAccessFile可以按照日志名称的格式进行定期备份,拥有一定的备份策略。
            1.是否压缩备份日志:直接在filePattern属性的文件名称最后加对应的压缩后缀,如gzip压缩用 .gz
        -->
        <RollingRandomAccessFile name="RollingRandomAccessFile" fileName="logs/RollingRandomAccessFile.log"
                                 filePattern="logs/RollingRandomAccessFile-%d{yyyy-MM-dd}-%i.log.gz">
            <PatternLayout>
                <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
            </PatternLayout>
            <!-- 备份策略:满足其中一个就可以启动备份-->
            <Policies>
                <!-- interval 多久执行一次备份,单位为 RollingRandomAccessFile的属性filePattern中%d{yyyy-MM-dd}的最小时间单位,此处是天-->
                <TimeBasedTriggeringPolicy  interval="1"  modulate="true"/>
                <SizeBasedTriggeringPolicy size="250 MB"/>
            </Policies>
            <!-- 默认的备份策略:max="7"表示最多只保留7份日志,fileIndex属性是在拥有多个备份日志的时候,命令是以递增的数为文件名,max值时值大的文件是最新的内容,min值时值大的是最久的内容-->
            <DefaultRolloverStrategy  fileIndex="max" max="7">
                <!-- 删除指定目录下60天之前的日志-->
                <Delete basePath="${log.path}" maxDepth="2">
                    <IfFileName glob="*/app-*.log.gz" />
                    <IfLastModified age="60d" />
                </Delete>
            </DefaultRolloverStrategy>
        </RollingRandomAccessFile>

        <!-- 异步 appder  ,使用的是ArrayBlocingQueue -->
        <Async name="Async">
            <AppenderRef ref="MyFile"/>
        </Async>

    </Appenders>

    <Loggers>
        <Root level="error">
            <AppenderRef ref="MyFile"/>
        </Root>

        <!-- logger
        additivity属性:如果设置为true(默认值)则log会被打印两次,这里的logger和root-->
        <Logger name="com.foo.bar.MyApp" level="info" additivity="true">
            <appender-ref ref="RandomAccessFile"/>
        </Logger>

        <!-- 异步 logger:使用了disruptor类库,代替Jdk中的queue,性能提高很多
        includeLocation属性是指layout中的  %C or $class, %F or %file, %l or %location, %L or %line, %M or %method,异步logger默认为false,如果设置为true,会影响logger的性能
        -->
        <AsyncLogger name="com.foo.test" level="info" additivity="false" includeLocation="false">
            <appender-ref ref="log4j2test"/>
            <appender-ref ref="STDOUT"/>
        </AsyncLogger>
    </Loggers>
</Configuration>

 

 

 

 

 

 

 

使用文档: 文档下载

用户手册:下载

 

 

 

 

 

 

 

官网 http://logging.apache.org/log4j/2.x/

0
1
分享到:
评论
1 楼 code4bread 2017-03-09  
logs/RollingRandomAccessFile-%d{yyyy-MM-dd}-%i.log.gz中的%i是什么意思啊,还有能不能在日志文件的路径上加日期?

相关推荐

    老生常谈Log4j和Log4j2的区别(推荐)

    Log4j只需要引入一个JAR包,即log4j.jar,而Log4j2则需要引入两个核心JAR包,即log4j-core.jar和log4j-api.jar。大家可以发现,Log4j和Log4j2的包路径是不同的,Apache为了区分,包路径都更新了。 文件渲染 Log4j...

    若依框架使用的log4j2.16.0,修复log4j漏洞log4j2下载最新log4j2.16.0下载

    在2021年底,一个重大的安全漏洞(CVE-2021-44228)被发现在Log4j2的早期版本中,这个漏洞被称为“Log4Shell”。攻击者可以利用这个漏洞通过精心构造的输入来执行任意代码,对系统造成严重威胁。 标题中提到的“log...

    Log4j2简介及与Log4j效率对比

    10. **优化的并发支持**:Log4j2利用Java 5提供的并发特性,能够在较低级别上执行锁定操作,有效避免了Log4j 1.x中出现的死锁问题。 ### Log4j2与Log4j效率对比 #### 测试环境与方法 为了准确评估Log4j2与Log4j...

    Log4j2学习log4j2.xml配置模板

    Log4j2 配置模板学习笔记 Log4j2 是 Java 语言中一种流行的日志记录工具,它提供了灵活的日志记录管理功能。...*可扩展性强:Log4j2 提供了非常强的可扩展性,可以根据需要添加新的 appender 和配置。

    log4j中文手册(中文版)

    ### log4j中文手册知识点概览 #### 1. 简介 - **概述**:日志记录在软件开发中扮演着至关重要的角色。它不仅帮助开发者追踪问题,还能在生产环境中收集运行数据用于分析。传统的日志记录方式如`System.out.println...

    logging-log4j2-log4j-2.15.0-rc2.zip maven 资源库

    针对Log4j 2 远程代码执行漏洞,需要用到的升级资源包,适用于maven资源库,包括log4j,log4j-core,log4j-api,log4j-1.2-api,log4j-jpa等全套2.15.0 maven资源库jar包。如果是maven本地仓库使用,需要将zip包解压...

    Log4j2学习用到的jar包及apache-log4j-2.19.0-bin.zip

    分别有disruptor-3.3.4.jar(Log4j2异步日志的底层实现)、log4j-api-2.19.0.jar(log4j门面)、log4j-core-2.19.0.jar(log4j实现)、log4j-slf4j-impl-2.19.0.jar(SLF4J与Log4j绑定)、slf4j-api-1.7.30.jar(SLF...

    Log4j2、Fastjson、Log4j的BurpSuite插件亲测有效

    Log4j、Log4j2和Fastjson的安全性问题在过去曾引起广泛关注,例如Log4j2的CVE-2021-44228(也被称为Log4Shell漏洞),这是一个远程代码执行漏洞,影响了许多使用Log4j2的系统。这个插件可能就是为了检测和利用这些...

    SpringBoot框架配置log4j和log4j2的配置代码

    Log4j2作为Log4j的升级版,提供更好的性能和更丰富的特性,如异步日志记录,JSON布局,以及可插拔的日志配置。 #### 配置Log4j2 1. **添加依赖**:在`pom.xml`中,添加Log4j2的依赖。 ```xml &lt;groupId&gt;org....

    扫描log4j2 版本扫描log4j2 版本

    2. **版本确认**:然后,通过查看项目配置文件(如`log4j2.xml`或`log4j2.json`)或依赖管理工具(如Maven或Gradle)的配置,确定当前使用的Log4j2版本。 3. **漏洞评估**:对比已知受影响的版本列表,如CVE-2021-...

    log4j参考手册

    Log4j是Apache的一个开源项目,...总的来说,Log4j提供了一套完整的日志解决方案,不仅能够满足基本的日志记录需求,还支持高级特性如日志过滤、文件管理和分布式日志收集,使得日志管理在各种复杂环境中都能游刃有余。

    log4j中文手册.pdf

    此外,手册还可能涉及自定义布局、过滤器、触发策略等高级特性,这些功能使得log4j能够适应各种复杂的需求。例如,通过使用PatternLayout,你可以自定义日志信息的输出格式;使用Filters可以进一步筛选要记录的日志...

    logging-log4j2-log4j-2.15.0-rc2.zip

    Log4j 2是Log4j的下一代版本,它引入了大量新特性,包括异步日志记录、可插拔的日志格式化器、动态配置以及丰富的API。相较于Log4j 1.x,Log4j 2不仅在性能上有所增强,而且在用户体验和安全性上都有显著改进。 2....

    log4j2漏洞检测工具

    6. **持续监控**: 设置定期扫描,确保新的Log4j2引入不会引入新的安全问题。 **总结** Log4j2漏洞检测工具是保障系统安全的重要工具,它可以快速、准确地定位潜在的安全风险,并提供有效的修复建议。对于任何使用...

    修复log4j漏洞log4j2下载最新log4j2.16.0下载 log4j-api-2.16.0.jar

    apache下载太慢,特搬到国内下载。修复log4j漏洞log4j2下载最新log4j2.16.0下载

    log4j2所需jar包

    这个压缩包包含的两个关键文件——`log4j-api-2.11.1.jar`和`log4j-core-2.11.1.jar`是Log4j2框架的核心组件。 1. **log4j-api-2.11.1.jar**:这个文件提供了Log4j2的API接口。开发者主要通过这些接口来与Log4j2...

    spring-boot-starter-log4j2

    Log4j2的设计目标是提供灵活的日志记录方式,包括异步日志记录、动态配置、插件架构等特性,使得它在性能和可扩展性方面优于其他日志框架。 二、Spring Boot与Log4j2的结合 Spring Boot通过starter机制简化了第三...

Global site tag (gtag.js) - Google Analytics