Log4J1升级Log4J2

近期,碰到需要将项目中的Log4J1升级到Log4J2,现进行下总结。交代下技术背景:web项目,基于Java + Maven

1. 依赖

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.3</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.3</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.2</version>
</dependency>
<!-- slf4j到log4j2的桥梁 -->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.3</version>
</dependency>
<!-- listener:Log4jServletContextListener依赖 -->
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-web</artifactId>
    <version>2.3</version>
    <scope>runtime</scope>
</dependency>

PS:slf4j-log4j12与log4j-slf4j-impl冲突,注意exclusion间接引入的slf4j-log4j12

2. 日志配置

配置log4j2.xml,放于classpath:log/log4j2.xml,或其他位置,则要注意修改下面web.xml中的响应配置

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="off">
    <Appenders>
        <Console name="STDOUT" target="SYSTEM_OUT">
            <PatternLayout pattern="[%d] %-5p [%c %L] %m%n"/>
        </Console>
        <RollingFile name="AppAppender" fileName="/data/applogs/{项目名称}/logs/app.log"
                     filePattern="/data/applogs/{项目名称}/logs/app.log.%d{yyyy-MM-dd}">
            <PatternLayout>
                <Pattern>[%d] %-5p [%c %L] %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <!-- 每天切割日志 -->
                <TimeBasedTriggeringPolicy interval="24" modulate="true"/>
            </Policies>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="STDOUT"/>
            <AppenderRef ref="AppAppender"/>
        </Root>
    </Loggers>
</Configuration>

PS:

{项目名称} 需替换成自己的项目;

/data/applogs/{项目名称}/logs/app.log 设置日志文件的绝对路径

/data/applogs/{项目名称}/logs/app.log.%d{yyyy-MM-dd} 设置切割后日志的绝对路径

3. 读取配置

web.xml中增加读取log4j2.xml的配置:

    <!--由Spring载入的Log4j配置文件位置 -->
    <context-param>
        <param-name>log4jConfiguration</param-name>     <!-- log4j2.xml文件位置,注意与2中的相对应 -->
        <param-value>classpath:log/log4j2.xml</param-value>
    </context-param>

    <!-- the very first listene -->
    <listener>
        <listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
    </listener>

4 参考资料  

Apache Log4j 2

slf4j与jul、log4j1、log4j2、logback的集成原理

  

  

时间: 2024-08-26 09:42:54

Log4J1升级Log4J2的相关文章

slf4j、jcl、jul、log4j1、log4j2、logback大总结

1 系列目录 jdk-logging.log4j.logback日志介绍及原理 commons-logging与jdk-logging.log4j1.log4j2.logback的集成原理 slf4j与jdk-logging.log4j1.log4j2.logback的集成原理 slf4j.jcl.jul.log4j1.log4j2.logback大总结 2各种jar包总结 log4j1: log4j:log4j1的全部内容 log4j2: log4j-api:log4j2定义的API log4

Java日志框架使用技巧收集(slf4j、jcl、jul、log4j1、log4j2、logback)

乒乓狂魔-教程: jdk-logging.log4j.logback日志介绍及原理 commons-logging与jdk-logging.log4j1.log4j2.logback的集成原理 slf4j与jdk-logging.log4j1.log4j2.logback的集成原理 slf4j.jcl.jul.log4j1.log4j2.logback大总结 离线版本:(链接: https://pan.baidu.com/s/1hrBOojM 密码: pxaq)

log4j升级log4j2

1.单独使用log4j 如果在我们系统中单独使用log4j的话,我们只需要引入log4j的核心包就可以了,我这里用的是:log4j-1.2.17.jar, <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> 在src/main/resources添

slf4j+log4j升级log4j2

首先在pom文件中加入以下依赖 <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.6.2</version> </dependency> <dependency> <groupId>org.apache.logging.log4j&l

log4j升级为log4j2(无需改动代码)

操作: 1.删掉项目中存在的Log4j1.x的jar包,添加log4j2的jar包; 2.添加log4j和log4j2的连接包log4j-1.2-api-2.x.x.jar,注意不是log4j-api-2.x.x.jar; 3.添加log4j2的配置文件log4j2.xml即可,log4j升级log4j2升级成功. 扩展:如果原项目中用的是slf4j打印日志,那么导包的时候需要导入: slf4j-api-1.x.x.jar slf4j-log4j12-1.x.x.jar 原文地址:http://

混乱的 Java 日志体系

混乱的 Java 日志体系 2016/09/10 | 分类: 基础技术 | 0 条评论 | 标签: LOG 分享到: 原文出处: xirong 一.困扰的疑惑 目前的日志框架有 jdk 自带的 logging,log4j1.log4j2.logback ,这些框架都自己定制了日志 API ,并且有相应的实现:目前用于实现日志统一的框架 Apache commons-logging.slf4j ,遵循「面向接口编程」的原则,这两大框架可以让用户在程序运行期间去选择具体的日志实现系统(log4j1\

OSChina 开源周刊第三十三期 —— Node.js 和 io.js 准备合作!

每周技术抢先看,总有你想要的! 开源资讯 Node.js 和 io.js 准备合作!合久必分,分久必合? Nervana 开源深度学习软件,性能超 Facebook.Nvidia产品 B 站建开源工作组 多 APP 使用其开源项目 Android 新开发技术 Sky:Dart 开发 Android 应用 谷歌红帽及 VMware 宣布支持 CoreOS 容器 Oracle 宣布 Java 7 生命周期终结 Java 9 公布发行计划,明年 9 月发布正式版 IO.js 2.0.0 发布,服务器

java 日志框架

log4j 的API 调用,改为 slf4j-simple 实现. slf4j-simple 是 slf 的简单实现.log4j-over-slf4j-1.7.5.jarslf4j-api-1.7.5.jarslf4j-simple-1.7.5.jar slf4j 的API 调用,使用 log4j 实现.为什么是 log4j12, 12 ?log4j-1.2.16.jarslf4j-log4j12-1.7.5.jarslf4j-api-1.7.5.jar log4j 的API 调用,改为 jdk

日志框架总结

1 日志框架简介 (参考:http://xfhnever.com/2015/09/20/log-java-2/) 各种日志框架可以分为两类: 日志实现框架:jdk自带的logging(jul),log4j1.log4j2.logback 日志门面,即提供统一的接口不提供实现:apache的commons-logging(jcl).slf4j 2 日志实现框架需要的jar包 log4j: log4j:log4j1的全部内容 log4j2: log4j-api:log4j2定义的API log4j-