IDEA整合日志框架Log4j2+Slf4j详细配置过程

日志框架这么多,他们之间到底是什么关系呢?笼统的讲就是slf4j是一系列的日志接口,而log4j2、logback是具体实现了接口功能的日志框架。现在的主流日志接口都使用slf4j,而日志的实现就见仁见智了,至于他们的关系请自行百度,此处选择log4j2作为实现框架。网上看到的教程要么对代码没有解释,对新手不友好;要么时间比较久远,跟不上时代。这里使用新版本并结合大量注释,力求简洁明了,有什么问题欢迎留言交流。

运行环境:

  • log4j2 2.8.1 + slf4j 1.7.25
  • IntelliJ IDEA 2017.2.5
  • maven 3.0.5

配置过程

Step 1:导入maven依赖

    <properties>
        <slf4j.version>1.7.25</slf4j.version>
        <log4j.version>2.8.2</log4j.version>
    </properties>
     <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-web</artifactId>
            <version>${log4j.version}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>${log4j.version}</version>
        </dependency>

Step 2:添加配置文件

配置文件可以直接在resources文件夹下创建,文件名为log4j2.xml,该文件夹是IDEA专门用来存放各种配置文件的地方,这样就不需要指定配置文件的位置。如果想放在其他文件夹下,则需要在web.xml文件中添加如下配置:

    <context-param>
        <param-name>log4jConfiguration</param-name>
        <!-- 日志配置文件路径,请根据具体项目自行调整 -->
        <param-value>classpath:conf/log4j2.xml</param-value>
    </context-param>    

我的配置文件log4j2.xml内容如下(此处并没有将日志信息输出到外部文件)

<?xml version="1.0" encoding="utf-8"?>
<!--日志级别:TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出-->
<!--
    status : 这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,会看到log4j2内部各种详细输出
    monitorInterval : Log4j能够自动检测修改配置文件和重新配置本身, 设置间隔秒数。此处表示每隔300秒重读一次配置文件
-->
<Configuration status="ERROR" monitorInterval="300">
    <!--<properties>-->
    <!--<property name="LOG_HOME">F:\logs</property>-->
    <!--<property name="ERROR_LOG_FILE_NAME">error</property>-->
    <!--</properties>-->
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT"> <!-- 定义类型为Console的Appender -->
            <PatternLayout pattern="%d{HH:mm:ss} [%-5level] [%-10thread] %c{1} - %msg%n"/> <!-- 定义类型为Pattern的Layout -->
        </Console>
    </Appenders>
    <!--定义logger,只有定义了logger并引入上面的appender,appender才会生效-->
    <Loggers>
        <Root level="error"> <!-- 定义Root Logger -->
            <AppenderRef ref="Console"/> <!-- Root Logger的Appender引用上面定义的Console -->
        </Root>
        <!--定义名字为MainLogger的Logger,其日志级别为info,info以下级别的信息将不会输出 -->
        <Logger name="MainLogger" level="info" additivity="false">
            <AppenderRef ref="Console"/> <!-- Root Logger的Appender引用上面定义的Console -->
        </Logger>
    </Loggers>
</Configuration>

Step 3: 在Java文件中使用slf4j打印日志信息:

此处注意Logger的名称必须与配置文件中对应

@Controller
public class MainController {
    // 获取log4j2.xml文件中定义的名为“MainLogger”的Logger
    // 如果没有对应名称的Logger,则无法使用Logger记录和输出日志信息
    private static final Logger log = LoggerFactory.getLogger("MainLogger");

    @RequestMapping(value = "/test")
    public String test(){
        log.info("info...");
        log.debug("debug...");
        log.warn("warn...");
        log.error("error...");
        return "test";
    }
}
时间: 2024-11-05 16:35:46

IDEA整合日志框架Log4j2+Slf4j详细配置过程的相关文章

Mybatis详细配置过程

Mybatis详细配置过程 1. mybatis 是一个 基于java 的持久层框架..内部封装了jdbc ,使开发者 只需 关注SQL语句本身,而不用花精力去处理诸如注册驱动.创建connection 配置Statement等繁杂过程. Mybatis 拖过xml 或注解的方式 将要执行的各种statement 配置起来. 并通过java对象和statement中的SQL的动态参数进行映射最终生成sql语句.最终由mybatis框架执行SQL 并将结果映射成java对象并返回... 2. 下载

转载 - Struts2 拦截器详细配置过程

出处:http://www.blogjava.net/zzzlyr/archive/2009/10/12/297998.html Struts2 拦截器详细配置过程 1:所有拦截器的超级接口Interceptor ,Action去实现这个接口; Interceptor 它其中有三个方法(init(),destroy() ,interceptor()): Init()方法:在服务器起动的时候加载一次,并且只加载一次; Destroy()方法:当拦截器销毁时执行的方法; Interceptor()方

转载 - Vim 的 Python 编辑器详细配置过程 (Based on Ubuntu 12.04 LTS)

出处:http://www.cnblogs.com/ifantastic/p/3185665.html Vim 的 Python 编辑器详细配置过程 (Based on Ubuntu 12.04 LTS) 为什么要用vim编辑py文件? 因为在Linux命令行中,缺少图形界面的IDE,vim是最佳的文本编辑器,而为了更好的编辑py文本,所以配置vim. 1. 安装完整版vim vi和vim的区别? 在Linux自带有vi编辑器,而vim是指vi improved,即vi升级版.区别在于vi指令和

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

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

日志框架 log4j2 全解析

概述 logging翻译为日志记录 那问题是什么是日志? 日志实际上是日记的一种,用于记录某个时间点发生了什么事情,比如大学老师的教学日志,工作日志等 为什么要记录日志? 在实际生活中记录日志主要为了日后复查, 比如某个大学老师每天记录自己讲的什么内容,后面有学生某科成绩优异获奖了,校长想要奖励对应的老师,但由于每个老师教的班级都很多,并不一定记得是谁教的,这时候就可以查看教学日志来获取需要的信息了 再比如,工厂的生产日志,如果某个产品除了因为某个零件出现了故障,通过生成日志,可以找到与这个产品

Java日志框架:slf4j作用及其实现原理

简单回顾门面模式 slf4j是门面模式的典型应用,因此在讲slf4j前,我们先简单回顾一下门面模式, 门面模式,其核心为外部与一个子系统的通信必须通过一个统一的外观对象进行,使得子系统更易于使用.用一张图来表示门面模式的结构为: 门面模式的核心为Facade即门面对象,门面对象核心为几个点: 知道所有子角色的功能和责任 将客户端发来的请求委派到子系统中,没有实际业务逻辑 不参与子系统内业务逻辑的实现 大致上来看,对门面模式的回顾到这里就可以了,开始接下来对SLF4J的学习. 我们为什么要使用sl

【有图有真相】静态NAT、动态NAT、PAT、端口映射的详细配置过程

实验要求:使用宿主机利用NAT地址转换技术访问虚拟机的Web80端口.全是***实弹的操作步骤. 实验前提:开启server 2008虚拟机并且搭建一个简单web服务.打开GNS3连接拓扑图的线路,一边连接宿主机,一边连接虚拟机的网卡. 实验步骤:首先是在宿主机和虚拟机上配置IP地址.然后在路由器上配置IP地址,然后先测试宿主机此时是否可以正常访问web服务. 然后在路由器上配置静态NAT.动态NAT和PAT端口多路复用,以及端口映射的关系来改变我们正常访问的接口.下面是配置的详细过程. 首先给

NFS详细配置过程

在公司主要是需求是共享服务,但是没有多余的服务器来做共享平台,现在利用一台测试机来做NFS服务器,充分利用服务器的磁盘资源       O(∩_∩)O哈哈~ 在公司安装成功后,回家后,参考博友的自己也来写一个详细的安装过程.方便以后温故. 为什么要用NFS NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源.在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,

PC-Lint的安装详细配置过程(以VC++6.0环境为例)

本文主要介绍了PC-Lint安装后针对VC++6.0开发环境进行配置的详细过程,总共分为三部分,下面依次对这三部分进行说明. 一.   首先下载PC-Lint,然后开始安装,一路"下一步"直到安装完成.此时会弹出一个对话框,询问你是否进行配置,点击确定,然后进入第二步的配置过程.注意,笔者这里默认将安装路径放在C盘下.读者修改安装路径后需注意这个路径和后续的配置有很大的关系. 二.   接下来就是配置PC-Lint的过程,如图1至图20所示. 图1   PC-Lint配置过程 图2