美文网首页
JAVA 日志框架简单了解

JAVA 日志框架简单了解

作者: sT丶 | 来源:发表于2019-10-18 11:19 被阅读0次

JAVA 开发中,一个离不开的东西就是日志,当在本地开发时,想要找到一些引起BUG 的问题点,我们可以通过DEBUG的形式,但是一旦项目上线,我们可能就没办法直接追踪问题,这时就需要一些工具帮我们把项目运行中一些数据打印保存下来,方便问题分析定位。

没有日志框架怎么办

记得刚开始开发JAVA 时,我们一定都用过System.out.println()做过打印的事情,其实,这样也不是不可以,但是一个日志框架要做的,其实并不只是打印输出数据,他可能还需要具有以下一些功能

  1. 可以持久化,无论是磁盘文件,还是数据库等
  2. 如果是持久化到磁盘文件,可以自定义分割,比如超过10M自动分割,防止单个日志文件过大。
  3. 可以控制输出级别。比如有些日志我只要在测试环境的时候才打印,而正式上线,则不打印。

还有一点,因为System.out.println() 底层是用到了synchronized 关键字,可能会导致一些性能问题


image.png

常见的日志框架

JAVA 开发中,大家也一定用到很多日志框架,常见的主要有以下这些。

  • JDKLog
  • Log4J
  • LogBack
  • SLF4J

JDKLog

JDKLog 是JDK自带的日志框架,不需要引入任何的第三方包就可以直接使用,使用方法如下

import java.util.logging.Logger;


   Logger logger = Logger.getLogger("JDKLog");
   logger.info("Hello World.");

运行后输出


image.png

Log4J

Log4J 是Apache基金开源的日志框架,他可以实现控制日志输出目的地,控制输出格式等等。
Log4J 实际上分了Log4J 和 Log4J2,下面演示下Log4J的使用方法
先引入相关包

<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

然后项目中使用

import org.apache.log4j.Logger;

  Logger logger = Logger.getLogger(JLog.class);
        logger.info(" info ");
        logger.debug(" debug ");
        logger.error(" error ");

但是如果直接是在普通的maven 项目中使用,可能会出现如下错误:

log4j:WARN No appenders could be found for logger (log.JLog).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

因为log4j 需要配置一些东西才可以,我们可以在项目的resources目录下建立 log4j.properties文件,然后
写入如下配置

log4j.rootLogger=ALL, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

这样,就可以顺利打印了,结果如下


image.png

LogBack

LogBack 是在log4j 之后的一个日志框架,实际上是同一个人开发的,主要是重写了内核,比log4j在性能上更加的好,以下介绍摘自百度百科:

Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能

使用方法如下:
先引入依赖

   <!--这个依赖直接包含了 logback-core 以及 slf4j-api的依赖-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

     Logger log = LoggerFactory.getLogger(JLog.class);
     log.info("info");
     log.debug("debug");
     log.error(" error ");

SLF4J

SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统,他主要解决的问题场景如下,假如系统今天采用了A日志框架,过了2天由于特殊原因,需要切换到B日志框架,那如果没有这个门面,则需要更改所有的日志代码,而有了这个门面,项目中直接使用门面来输入日志,则切换时没有影响,不需要改变任何代码,只需要引入新的依赖,做一个配置即可。

常用的日志级别

  • OFF 关闭:最高级别,不输出日志。
  • FATAL 致命:输出非常严重的可能会导致应用程序终止的错误。
  • ERROR 错误:输出错误,但应用还能继续运行。
  • WARN 警告:输出可能潜在的危险状况。
  • INFO 信息:输出应用运行过程的详细信息。
  • DEBUG 调试:输出更细致的对调试应用有用的信息。
  • TRACE 跟踪:输出更细致的程序运行轨迹。
  • ALL 所有:输出所有级别信息

相关文章

  • JAVA 日志框架简单了解

    JAVA 开发中,一个离不开的东西就是日志,当在本地开发时,想要找到一些引起BUG 的问题点,我们可以通过DEBU...

  • Java 日志框架

    title: Java 日志框架date: 2021/02/05 12:28 一、Java 日志框架简介 1.1 ...

  • java.util 之Collection源码分析

    在java.util 概述之集合框架中,我们简单了解了java的集合框架。现在让我们从源头上分析java集合框架的...

  • Netty源码分析-08 Netty的日志

    8.1 Java的日志系统 java领域存在多种日志框架,目前常用的日志框架包括Log4j,Log4j 2,Com...

  • Java日志框架使用

    Java的日志框架种类很多,为了解决团队中可以任意切换底层日志框架的问题,产生了slf4j,它只是定义了一套接口,...

  • 各框架对比及项目优化

    请简单介绍一下你了解的Java领域中的Web Service框架都有哪些? 考察点:框架 参考回答: Java领域...

  • 2018-01-14 Java应用日志

    java日志体系 java日志体系很混乱。在日志实现框架在有log4j,log4j2,java.util.log,...

  • Springboot整合log4j2日志全解

    常用的日志框架 java.util.logging:是JDK在1.4版本中引入的Java原生日志框架 Log4j:...

  • SpringBoot整合Log4j2步骤:

    常用日志框架 java.util.logging:是JDK在1.4版本中引入的Java原生日志框架Log4j:Ap...

  • 崩溃日志收集框架方案选型调研

    最近应项目需求,准备做奔溃日志收集框架,前期简单调研一番。 一、日志收集方案 类型名称描述说明java crash...

网友评论

      本文标题:JAVA 日志框架简单了解

      本文链接:https://www.haomeiwen.com/subject/lftimctx.html