昨天自己测试了一下slf4j+log4j2的配置,可以正常使用,虽然配置十分简单,但好记性不如烂笔头,想想还是记录下来吧。

运行的环境:jdk1.7、tomcat7、Maven的web项目

1.在新建的maven项目的pom文件中添加jar包依赖(依赖代码在步骤末尾):

需要添加依赖的jar包有:

slf4j的api接口包:slf4j-api

log4j2的核心包:log4j-core

log4j2的api接口包:log4j-api

slf4j对应log4j2日志框架的驱动包:log4j-slf4j-impl

log4j2的异步日志功能包:com.lmax.disruptor

解决web项目log4j可能出现警告的jar包:log4j-web

2.配置log4j2.xml日志配置文件(日志配置文件内容放在步骤末尾

·日志配置文件默认读取路径为src/main/resource

·若文件放置在默认读取路径下则无需配置读取路径

·若文件放置到其他路径下则需要在web.xml中设置日志配置文件的读取路径,代码如下:

<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>classpath:log4j2.xml</param-value>
</context-param>

3.在代码中使用日志功能:

 import org.slf4j.Logger;
import org.slf4j.LoggerFactory; public class logTest { // 通过slf4j接口创建Logger对象
private static final Logger logger = LoggerFactory.getLogger(logTest.class); public static void main(String[] args) {
logger.info("this is info");
logger.error("this is error");
}
}

运行效果:

关于日志配置文件的详细说明请参考log4j2配置文件log4j2.xml详解,以下是pom.xml需要加入的jar包依赖以及日志配置文件log4j2.xml内容示例:

pom.xml需要加入的jar包依赖:

<properties>

<!-- jar包版本设置 -->

<slf4j.version>1.7.21</slf4j.version>

<log4j.version>2.11.0</log4j.version>

</properties>

<dependencies>

<!-- 导入slf4j的接口包以及对应日志框架的驱动包 -->

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-api</artifactId>

<version>${slf4j.version}</version>

</dependency>

<!--用于slf4j与log4j2保持桥接 -->

<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-slf4j-impl -->

<dependency>

    <groupId>org.apache.logging.log4j</groupId>

    <artifactId>log4j-slf4j-impl</artifactId>

    <scope>runtime</scope>

    <version>${log4j.version}</version>

</dependency>

<!-- 导入日志框架核心包与接口包 -->

<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->

<dependency>

<groupId>org.apache.logging.log4j</groupId>

<artifactId>log4j-core</artifactId>

<scope>runtime</scope>

<version>${log4j.version}</version>

</dependency>

<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->

<dependency>

    <groupId>org.apache.logging.log4j</groupId>

    <artifactId>log4j-api</artifactId>

    <version>${log4j.version}</version>

</dependency>

<!--用于解决web环境下关闭服务器时可能出现的log4j线程无法及时关闭的warn,web工程需要包含log4j-web,非web工程不需要 -->

<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-web -->

<dependency>

<groupId>org.apache.logging.log4j</groupId>

<artifactId>log4j-web</artifactId>

<scope>runtime</scope>

<version>${log4j.version}</version>

</dependency>

<!--使用log4j2的AsyncLogger时需要包含disruptor -->

<!-- https://mvnrepository.com/artifact/com.lmax/disruptor -->

<dependency>

    <groupId>com.lmax</groupId>

    <artifactId>disruptor</artifactId>

    <scope>runtime</scope>

    <version>3.4.2</version>

</dependency>

</dependencies>

日志配置文件内容示例:

 <?xml version="1.0" encoding="UTF-8"?>

 <!--
日志说明: (1)请根据实际情况配置各项参数 (2)需要注意日志文件备份数和日志文件大小,注意预留目录空间 (3)实际部署的时候backupFilePatch变量需要修改成linux目录 --> <configuration status="error"> <Properties> <Property name="fileName">front.log</Property> <Property name="backupFilePatch">d:/usr/front/log/</Property> </Properties> <!--先定义所有的appender--> <appenders> <!--这个输出控制台的配置--> <Console name="Console" target="SYSTEM_OUT"> <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--> <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" /> <!--这个都知道是输出日志的格式--> <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" /> </Console> <!--这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档--> <RollingFile name="RollingFile" fileName="${backupFilePatch}/${fileName}" filePattern="${backupFilePatch}$${date:yyyy-MM}/app-%d{yyyyMMddHHmmssSSS}.log.gz"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS z} %-5level %class{36} %L %M - %msg%xEx%n" /> <!-- 日志文件大小 --> <SizeBasedTriggeringPolicy size="20MB" /> <!-- 最多保留文件数 --> <DefaultRolloverStrategy max="20"/> </RollingFile> </appenders> <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效--> <loggers> <!--建立一个logger,此logger监听name对应的包名下的日志输出,level表示日志级别--> <Logger name="com.testlog" level="trace" additivity="true"> <AppenderRef ref="RollingFile" /> </Logger> <!--建立一个默认的root的logger--> <Root level="error"> <!-- 在root中关联appender才会在对应的位置输出日志,定义一个输出到文件的appender也必须关联到此处才会保存日志到文件 --> <AppenderRef ref="Console" /> </Root> </loggers> </configuration>

slf4j+log4j2的配置的更多相关文章

  1. slf4j+log4j2 pom配置

    <!-- log start --> <dependency> <groupId>org.slf4j</groupId> <artifactId& ...

  2. slf4j+log4j2模式的日志搭建

    前言:今天打算为大家介绍一下我们我们在项目中必须得有的一个部分——日志!是的,就是那些让我们看着头疼的东西~~~好的日志可以帮助团队成员快速发现并解决问题,用好了可以大幅度提高代码缺陷修复效率!言归正 ...

  3. 007-log-log4j2、slf4j+log4j2

    一.概述 而log4j2的性能无论在同步日志模式还是异步日志模式下都是最佳的. 根本原因在于log4j2使用了LMAX, 一个无锁的线程间通信库代替了, logback和log4j之前的队列. 并发性 ...

  4. 日志:slf4j+logback 的配置与使用

    1. 常用日志组件和选择 java开发日志处理是发现和调试bug所 必不可少的,那么现在企业中常用的日志组件有哪些呢,JCL . JUL.  SLF4j.Log4j.  Log4j2 . Logbac ...

  5. java日志管理 - slf4j+log4j2

    1 . 概述 1.1  日志框架实现 log4j是apache实现的一个开源日志组件: logback同样是由log4j的作者设计完成的,拥有更好的特性,用来取代log4j的一个日志框架,是slf4j ...

  6. log4j2的配置及使用

    log4j2与log4j1的不同点(不完整): 前者配置文件格式多样性.log4j2的配置文件可以是xml,也可以是json. 在不修改web.xml的前提下,前者配置文件的命名可以为log4j2.x ...

  7. log4j2高级配置(1)

    一.Log4j2高级配置介绍(1)    (1)日志输出到文件配置 <!-- 将日志输出到指定位置的文件中 --> <RollingFile name="RollingFi ...

  8. Log4j2日志配置详解(2)

    Log4j2日志配置系列之2 1.Configuration 在应用程序代码中插入日志请求需要相当多的计划和工作.观察显示,大约4%的代码用于日志记录.因此,即使是中等大小的应用程序也会在其代码中嵌入 ...

  9. log4j2.xml 配置

    动态生成日志, 日志路径: log4j2.xml 配置如下: <?xml version="1.0" encoding="UTF-8"?> < ...

随机推荐

  1. css实现左边div固定宽度,右边div自适应撑满剩下的宽度

    (1)使用float <div class="use-float"> <div></div> <div></div> & ...

  2. HDU 2544 最短路 (Floyd)

    题意:略. 析:由于 n 比较小,所以我们可以用Floyd,完全不会超时. 代码如下: #pragma comment(linker, "/STACK:1024000000,10240000 ...

  3. 洛谷P3698 [CQOI2017]小Q的棋盘

    传送门 考虑一个贪心,先在根节点周围转一圈,然后再往下走最长链肯定是最优的 然后设最长链的长度为$d$,如果$m\leq d$,那么答案为$m+1$ 否则的话还剩下$m-d+1$步,又得保证能走回来, ...

  4. HUE通过oozie工作流执行shell脚本

    HUE通过oozie工作流执行shell脚本 2018年01月17日 16:20:38 阅读数:217 首先上传对应的jar包和storm.sh脚本到hdfs,脚本内容如下: 脚本主要内容是:从hdf ...

  5. 字符类型C++(ascll码表)

    ascll码: 序号 字符 序号 字符 序号 字符 序号 字符 序号 字符 序号 字符 32 空格 48 0 64 @ 80 P 96 ` 112 p 33 ! 49 1 65 A 81 Q 97 a ...

  6. 用Google Cloud Platform搭建***服务教程

    之前FQ一直用的是***,天有不测风云,前几天发现ss服务挂了.更可怕的是ping都ping不通,多方打听,***中文社区已经炸开锅了,原因就是IP被封了.需要付费更换IP.然后到现在还是没有给我更换 ...

  7. [W3School]JavaScript教程学习

    JavaScript 简介 JavaScript 是世界上最流行的编程语言.这门语言可用于 HTML 和 web,更可广泛用于服务器.PC.笔记本电脑.平板电脑和智能手机等设备. JavaScript ...

  8. ACM_完全背包

    背包3 Time Limit: 2000/1000ms (Java/Others) Problem Description: 有n种(每一种有无数个)重量和价值分别为Wi,Vi的物品,现从这些物品中挑 ...

  9. MyEclipse无法自动编译项目故障一例

    MyEclipse导入项目后发现无法自动编译,classes目录下没有编译的类. 尝试的解决方法: 1.刷新项目,失败: 2.project->clean-,失败: 3.关闭项目再次打开,失败: ...

  10. CSS垂直居中和水平居中的几种方法

    垂直居中 方法一 这个方法把div 的显示方式设置为表格,因此我们可以使用表格的 vertical-align属性. <!DOCTYPE html> <html lang=" ...