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</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.6.2</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-web</artifactId>
    <version>2.6.2</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.12</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>1.7.12</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.6.2</version>
</dependency>

删除原来的slf4j依赖

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.7</version>
</dependency>

重写log4j.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="60">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT"> <!-- 定义类型为Console的Appender -->
            <PatternLayout pattern="%d [%t] %-5p %c{1} [%L] - %m%n"/> <!-- 定义类型为Pattern的Layout -->
        </Console>
                <RollingRandomAccessFile name="rollingRandomAccessFileAppender" immediateFlush="true" fileName="${logPath}/acc.log"
            filePattern="${logPath}/acc.log.%d{yyyy-MM-dd-HH}" append="true">
            <PatternLayout pattern="%d [%t] %-5p %c{1} [%L] - %m%n" />
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
            </Policies>
        </RollingRandomAccessFile>
    </Appenders>
    <Loggers>
        <Root level="info"> <!-- 定义Root Logger,其日志级别为info -->
            <AppenderRef ref="Console"/> <!-- Root Logger的Appender引用上面定义的Console -->
        </Root>
        <Logger name="HelloWorld" level="info" additivity="false"> <!-- 定义名字为HelloWorld的Logger,其日志级别为info,additivity为false -->
            <AppenderRef ref="Console"/> <!-- Root Logger的Appender引用上面定义的Console -->
                        <AppenderRef ref="rollingRandomAccessFileAppender"/>
        </Logger>
    </Loggers>
</Configuration>

项目中原来的log4j是根据每个小时打印日志,因此用了RollingRandomAccessFile。



然后,将log4j.xml重新命名为log4j2.xml,并且在web.xml中取消原来的context配置!
由于上面这一点一开始没有做,只是在原来log4j.xml的基础上把内容修改了,所以打包到服务器上运行时,一直没有日志文件输出,因为pom文件中依赖的其他项目带有log4j相关的jar包,slf4j不知道该使用哪一个。

升级完毕。

原文地址:http://blog.51cto.com/13693058/2095695

时间: 2024-10-08 17:22:00

slf4j+log4j升级log4j2的相关文章

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添

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://

log4j+slf4j迁移到log4j2+slf4j (Servlet3.0)

最近对系统中的旧项目实现log升级,选择了log4j2来代替log4j,作为最新一代的log实现,log4j2好在那里可以直接看log4j2性能章节. 这里写写如何从log4j升级到log4j2. 1. maven依赖的变化,对log4j的依赖变成了对log4j2的依赖,在实际使用过程中发现过旧的jboss logging会有问题,使用了3.3.0.Final支持log4j2的版本. <dependency> <groupId>org.apache.logging.log4j<

Slf4j与log4j及log4j2、logbak的关系及使用方法

Slf4j与log4j及log4j2的关系及使用方法 slf4j slf4j仅仅是一个为Java程序提供日志输出的统一接口,并不是一个具体的日志实现方案,就比如JDBC一样,只是一种规则而已,所以单独的slf4j是不能工作的,必须搭配其他具体的日志实现方案,比如log4j或者log4j2,要在系统中使用slf4j,我们需要引入的核心包为:slf4j-api-1.6.4.jar. 如果不想每次都写private  final Logger logger = LoggerFactory.getLog

JCL、SLF4J、Log4J、Log4J2、LogBack和JUL之间的关系,你搞清楚了吗?

写在前面 日志组件是我们平时开发过程中必然会用到的组件.在系统中正确的打印日志至少有下面的这些好处: 调试:在程序的开发过程中,必然需要我们不断的调试以达到程序能正确执行的状态 .记录日志可以让开发人员清楚的了解程序的运行状态定位问题: 信息收集:在DT时代,谁掌握了数据谁就掌握了主动权.现在主流的日志系统可以非常方便的记录用户行为数据,格式化成便于进行大数据分析的格式: 记录运行状态:应用程序投产之后,难免会出现生产事故,有了系统日志工程师可以根据日志迅速定位问题. 当然,硬币都具有两面性.引

log4j升级到logback

虽然现在log4j已经基本上不更新很久了,但实际上升级log4j到logback最大的难度并不在于本身的替换,而是现有大量的三方jar依然使用log4j,以至于无法100%的exclude掉,所以很有可能是无法做到纯粹将log4j升级到logback的.在我们的很多系统中,就如此. 如果是使用slf4j作为facade的话,是可以无缝的升级的,但是如果直接使用了Log4j中的类,恐怕就无能为力了. maven依赖: <dependency>              <groupId&g

通过slf4j/log4j的MDC/NDC 实现日志追踪

在分布式系统或者较为复杂的系统中,我们希望可以看到一个客户请求的处理过程所涉及到的所有子系统\模块的处理日志. 由于slf4j/log4j基本是日志记录的标准组件,所以slf4j/log4j成为了我的重点研究对象. slf4j/log4j支持MDC,可以实现同一请求的日志追踪功能. 基本思路是: 实现自定义Filter,在接受到http请求时,计算eventID并存储在MDC中.如果涉及分布式多系统,那么向其他子系统发送请求时,需要携带此eventID. 源代码:https://github.c

SLF4J 的几种实际应用模式一:SLF4J+Log4J

转载:http://zyjustin9.iteye.com/blog/2028936 SLF4J(Simple Logging Facade for Java) 是一个通用的日志框架,谓之 Facade(门面),所扮眼的角色相当于 Jakarta Commons Logging.就像 JCL 需要底层的日志实现,如 Log4J.java.util.logging.Simple Logger 等来完成具体的信息输出,事实上基本总是 JCL+Log4J 那么一个绝配.SLF4J 的原旨也是能支持多种

在android中配置 slf4j + log4j 日志记录框架

需求: 在项目开发中,需要记录 操作日志 .起初自己写了个简单的日志记录文本写入到文本的方法,后来随着项目的膨胀,需要考虑更多的操作,开始考虑性能问题. 实现: 考虑使用 slf4j + log4j 框架来实现.slf4j 是日志记录的一个facade,支持多种日志框架.log4j是个很优秀的日志记录框架. 实现: 下载类库: 先到各主站点下载类库 slf4j 网址 :http://www.slf4j.org/download.html log4j网址: http://logging.apach