Java编程:Intellij IDEA使用log4j输出日志记录完整教程

SLF4J

  • 简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它支持各种各样的日志框架。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志框架。
  • 在使用SLF4J的时候,不需要在代码中或配置文件中指定你打算使用那个具体的日志系统,SLF4J提供了统一的记录日志的接口,只要按照其提供的方法记录即可,最终日志的格式、记录级别、输出方式等通过具体日志系统的配置来实现,因此可以在应用中灵活切换日志系统。

log4j

  • Log For JavaApache的一个开源项目,可以灵活地记录日志信息。可以在运行时弃用日志记录而无需修改应用程序二进制文件,即可以通过编辑Log4j的配置文件控制日志记录行为,灵活配置日志的记录格式、记录级别、输出格式,无需触及应用程序二进制文件。也可以不使用配置文件,通过在代码中配置Log4j环境启用Log4j,但不如配置文件灵活。
  • log4j由三个重要的组件构成:优先级、输出目的地、输出格式。日志信息的优先级从高到低有ERRORWARN INFODEBUG,分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显 示内容。
  • log4j包的设计使得日志语句可以保留在已发布的代码中,不会产生很高的性能成本。日志记录为开发人员提供了应用程序故障的详细上下文。另一方面,测试提供了应用程序的质量保证和信心,记录和测试是互补的,不能混淆二者。
  • log4j的一个显着特征是记录器中的继承概念。使用记录器层次结构,可以很容易地控制以任意精细的粒度输出哪些日志语句,有助于减少记录的输出量和成本。
  • 日志输出的目标可以是文件,OutputStreamjava.io.Writer,远程log4j服务器,远程Unix Syslog守护程序或许多其他输出目标。

感觉理论有点枯燥,所以参考了几个博客,研究了一下怎么编程使用,下面是两个例子

一、基础Java项目使用log4j

1、创建Java项目

2下载log4j-1.2.17.zip,解压找到jar文件,将jar文件放在Java项目的src文件夹下

3、导入jar

4、配置log4j.properties文件:src上右键,newResource Bundle,输入文件名,OK

log4j.properties文件中输入配置信息(网上有很多详解log4j语法的博客):

5、设置日志内容:在src中新建测试类,编程,运行,代码和控制台如下图

输出的日志文件:

二、Maven项目使用log4j

  • Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。
  • EclipseIntellij idea都有Maven的插件,支持使用Maven构建项目。如果团队使用Maven构建项目,那么不论是否有IDE、或者不论IDE是什么,都不会出现因为换IDE导致的项目结构变化的问题。

1、新建Maven项目

2、点击右下角的Enable Auto-Import,使项目能够自动导入相应的包

3、配置pom.xml文件

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.2</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.2</version>
        </dependency>
    </dependencies>

4、配置log4j.properties文件:在resources文件夹下新建log4j.properties文件(配置信息同上,改下输出路径)

5、设置日志内容:建立测试类

6、编程,运行,结果如下

代码:

##配置文件log4j.properties

### 设置###
log4j.rootLogger = debug,stdout,D,E

### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出DEBUG 级别以上的日志到=E://Java//LogTest2//logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = E://Java//LogTest2//logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### 输出ERROR 级别以上的日志到=E://Java//LogTest2//logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =E://Java//LogTest2//logs/error.log 
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n
##测试类

import org.apache.log4j.Logger;

public class Test {
    private static Logger logger = Logger.getLogger(Test.class);

    public static void main(String[] args) {
        // 记录debug级别的信息
        logger.debug("This is debug message.");
        // 记录info级别的信息  
        logger.info("This is info message.");
        // 记录error级别的信息  
        logger.error("This is error message.");
    }
}

参考:

  • 20
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值