返回顶部
首页 > 资讯 > 后端开发 > Python >你真的懂java的日志系统吗
  • 720
分享到

你真的懂java的日志系统吗

2024-04-02 19:04:59 720人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录一、背景二、详情2.1、java自带的日志2.2、log4j2.3、logback2.4、slf4j2.5、JCL三、总结一、背景 在java的开发中,使用最多也绕不过去的一个话

一、背景

在java的开发中,使用最多也绕不过去的一个话题就是日志,在程序中除了业务代码外,使用最多的就是打印日志。经常听到的这样一句话就是“打个日志调试下”,没错在日常的开发、调试过程中打印日志是常干的一件事,同时系统正常运行过程中必要的日志打印也是必须的。

二、详情

在笔者刚接触java程序的时候,打印日志经常使用到到下面的代码,

System.out.println("hello log");

我相信在不了解日志系统的前提下使用上述的方式是最多的,同时也是新手小白最常用的方式,笔者曾经也是使用最多的。那么除了上述的方式还有其他的方式吗?答案是肯定的

2.1、java自带的日志

在java的api中提供了一套日志打印的方法,java程序人员在设计之初已经想到了这方面的功能,所以从jdk1.4起提供了日志打印的API,只不过被大多数人忽略了。这套API在java.util.logging包下,使用该种方式不需要引任何的jar,只要在java环境下即可使用。

如上图,是java提供的日志的一些类。使用方法类似下面的代码,

public static Logger logger=Logger.getLogger(Test.class.toString());
logger.info("hello log");

注意Logger的路径是java.util.logging.Logger。

2.2、log4j

log4j是apache的一个项目,其中又分为log4j1和log4j2,所谓log4j1指的就是其大版本号为1,不过log41在很早之前就已经停止更新了,源码官网:https://GitHub.com/apache/logging-log4j1

可以看的在2012年已经停止更新了,也就是说现在通常来说使用的log4j都是log4j2,更确切的说是log4j,为了准确期间,这里还是和之前的版本进行区分,使用log4j2的名字,log4j2是在log4j1基础上的升级,并吸收了logback这个框架的优秀之处且修复了其很多问题,可以说log4j2是一个优秀的日志框架,其源码官网:Https://github.com/apache/logging-log4j2

官网:https://logging.apache.org/log4j/2.x/index.html

log4j2的Maven依赖如下,引入log4j-api和log4j-core即可,

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.17.1</version>
  </dependency>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.17.1</version>
  </dependency>

这里有个问题要注意,log4j1和log4j2的groupId是不一样的,log4j1的是org.apache.log4j,log4j2的是org.apache.logging.log4j,带来的变化就是在使用的过程中要注意引用的类的路径,从路径上可以确定是使用的log4j1.x还是log4j2.x,如果是org.apache.log4j开头的包路径那么是版本1的,是org.apache.logging.log4j开头的是版本2的。

使用方式类似如下,

private static final Logger logger= LogManager.getLogger();
logger.info();

2.3、logback

logback是一个开源的日志框架,是log4j的作者为了代替log4j而开发的。logback包含三部分,logback-core、logback-classic、logback-access,logback-core是其他两个模块的核心,常用到的是logback-core+logback-classic。logback-access常和jetty和Tomcat结合。

logback的groupId为ch.qos.logback,其maven依赖如下

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.2.10</version>
  </dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.10</version>
  </dependency>
<!--平时用不到,可不引入-->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-access</artifactId>
    <version>1.2.10</version>
  </dependency>

使用方法可参考:https://www.jianshu.com/p/3e3b550920b3

其官网:https://logback.qos.ch/index.html

2.4、slf4j

slf4j不能称之为一个日志框架,因为它仅仅提供了一系列的标准,提供一系列接口,但没有实现,采用的是门面模式。

其依赖为:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.36</version>
  </dependency>

上面便是slf4j的核心包。

注意:如果使用slf4j出现下面的日志

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

说明没有日志实现框架,slf4j自己实现了一个日志框架,可以加上下面的依赖

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.7.36</version>
  </dependency>

slf4j可以和其他具体的日志实现框架进行结合使用,如下

上图是一个slf4j和其他日志框架结合的图形展示,

slf4j+logback

需要slf4j-api、logback-api、logback-classic三个包

slf4j+JDK日志

需要slf4j-api、slf4j-jdk14,其中slf4j-jdk14是slf4j和JDK日志结合的jar。

slf4j+log4j

需要slf4j+slf4j-log4j12

slf4j+JCL

需要slf4j、common-logging

其官网:https://www.slf4j.org/

2.5、JCL

JCL是Jakarta Commons Logging的简写,又叫Apache Commons Logging,提供的是一个 Java 的日志接口,同时兼顾轻量级和不依赖于具体的日志实现工具。它提供给中间件/日志工具开发者一个简单的日志操作抽象,允许程序开发人员使用不同的具体日志实现工具。用户被假定已熟悉某种日志实现工具的更高级别的细节。JCL提供的接口,对其它一些日志工具,包括Log4J, Avalon LogKit, and JDK 1.4等,进行了简单的包装,此接口更接近于Log4J和LogKit的实现。

其包为common-logging.jar包含了所有的功能,还有其他另外两个包common-logging-api、common-logging-adapters

官网:https://commons.apache.org/proper/commons-logging/guide.html

三、总结

本文简单总结了java中常用的日志,其中slf4j和JCL是日志的接口,又都进行了简单实现,既可以自己单独使用,又可以和其他实现日志框架结合使用,如,log4j、logback、JDK logging等。

到此这篇关于java日志系统的文章就介绍到这了,更多相关java日志系统内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 你真的懂java的日志系统吗

本文链接: https://lsjlt.com/news/139038.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 你真的懂java的日志系统吗
    目录一、背景二、详情2.1、java自带的日志2.2、log4j2.3、logback2.4、slf4j2.5、JCL三、总结一、背景 在java的开发中,使用最多也绕不过去的一个话...
    99+
    2024-04-02
  • Java日志路径设置教程,你真的懂吗?
    在Java开发中,日志记录是非常重要的一环。通过记录应用程序的运行状态,可以方便地进行错误排查和优化。在Java中,我们通常使用日志记录框架来实现日志记录。常见的日志记录框架有Log4j、Logback等。在使用这些框架时,我们需要配置日...
    99+
    2023-10-17
    日志 教程 path
  • Go语言分布式日志系统,你真的了解吗?
    随着互联网技术的不断发展,越来越多的应用程序需要处理大量的日志数据。为了更好地管理和分析这些日志,分布式日志系统应运而生。在这个领域里,Go语言也有着自己的优势和特色。本文将介绍Go语言分布式日志系统的基本概念、实现原理和代码演示,帮助读...
    99+
    2023-09-30
    分布式 日志 http
  • Java中的布隆过滤器你真的懂了吗
    目录什么是布隆过滤器实现的核心思想怎么理解典型应用场景什么是布隆过滤器 布隆过滤器(Bloom Filter)是一种空间效率非常高的随机数据结构,它利用位数组(BitSet)表示一个...
    99+
    2023-05-18
    Java布隆过滤器原理 Java布隆过滤器应用 Java布隆过滤器
  • 你真的了解Python和JavaScript的日志记录技巧吗?
    Python和JavaScript是两种常用的编程语言,它们都具有强大的日志记录功能。在开发应用程序时,记录日志是非常重要的,它可以帮助开发人员诊断和解决问题,同时也可以提供有用的信息来进行性能分析和监控。 Python的日志记录技巧 Py...
    99+
    2023-08-16
    javascript 日志 编程算法
  • http日志在go中的重要性,你真的了解吗?
    HTTP日志在Go中的重要性,你真的了解吗? 在现代Web开发中,HTTP日志是必不可少的。通过HTTP日志,我们可以了解到我们的应用程序是如何被使用的,以及用户和客户端的行为。在Go中,HTTP日志有着相当的重要性,因为它可以帮助我们快速...
    99+
    2023-08-04
    http 面试 日志
  • Java中的封装、继承和多态,你真的都懂了吗
    目录封装继承多态接口一些建议和小结写在最后的话封装 所谓的封装就是把类的属性和方法使用private修饰,不允许类的调用者直接访问,我们定义如下一个类,可以看到所有的成员变量和成员方...
    99+
    2024-04-02
  • Java 动态代理你真的懂了吗(动态和代理)
    好几天不写文章,今天来写一篇,从之前的计划表上看到还有关于java的动态代理没写,这个技术平常用的少,也不是特别好理解,今天补上这篇,希望能讲明白,不至于像我一样迷茫好久,开始吧 动...
    99+
    2024-04-02
  • Javascript异步编程之你真的懂Promise吗
    目录前言基本用法语法错误处理Promise链式调用async & await常用的方法1、Promise.resolve()2、Promise.reject()3、Promi...
    99+
    2024-04-02
  • 你真的了解Python日志打包load的工作原理吗?
    Python是一门广泛应用于各种领域的编程语言。在日志处理方面,Python也提供了很多的库和工具。其中,日志打包和load是日志处理中常用的操作之一。本文将深入讲解Python中日志打包和load的工作原理,并演示一些实用的代码。 一、日...
    99+
    2023-10-29
    日志 打包 load
  • 你真的掌握了Java日志技术吗?快来看看这篇教程!
    Java日志技术是Java开发中非常重要的一环,它可以帮助我们对程序运行时的信息进行记录和分析,从而帮助我们快速定位程序中的问题。但是,很多Java开发者在使用Java日志技术时并没有完全掌握其原理和使用方法,今天我们就来一起学习一下Jav...
    99+
    2023-10-31
    日志 教程 开发技术
  • 操作系统日志的奥秘:揭开系统运行的真相
    日志类型 操作系统日志有多种类型,每种类型记录不同类型的事件: 系统日志:记录操作系统本身的事件,例如启动、关闭和更新。 安全性日志:记录登录、注销、访问控制和安全事件。 应用程序日志:由应用程序生成的日志,记录应用程序的活动和错误。 ...
    99+
    2024-04-02
  • 怎么用系统日志了解你的Linux系统
    这篇文章将为大家详细讲解有关怎么用系统日志了解你的Linux系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Linux 系统日志非常重要。后台运行的程序(通常被称为守护进程或者服务进程)处理了你 Lin...
    99+
    2023-06-16
  • SpringBoot自动配置原理,你真的懂吗?(简单易懂)
    概述 上面博文(SpringBoot简介与快速搭建)我们简单的介绍了什么是SpringBoot,以及如何使用SpringBoot,但是我们对于SpringBoot的基本原理并没有介绍...
    99+
    2024-04-02
  • Python进阶学习之你真的懂元组吗?
    目录元组作为没有字段名的记录元组拆包具名元组总结元组作为没有字段名的记录 元组中的每个元素其实都存储了该元素的未知以及字段的数据,但是当我们把它理解为”不可变的列表&ld...
    99+
    2023-05-16
    Python元组应用 Python元组
  • 你真的了解PHP中不同数据类型的日志同步吗?
    PHP是一门广泛使用的编程语言,具有强大的功能和灵活性。在PHP中,不同的数据类型在日志同步方面有着不同的表现,这是一个值得深入了解的话题。 首先,我们需要明确一点:PHP中有哪些数据类型?常见的数据类型包括整型、浮点型、布尔型、字符串型、...
    99+
    2023-06-08
    日志 数据类型 同步
  • 你知道 PHP 日志 API 在 Unix 系统中的使用方法吗?
    PHP 日志 API 在 Unix 系统中的使用方法 PHP 是一种非常流行的编程语言,用于开发 Web 应用程序和其他各种应用程序。当我们在开发 PHP 应用程序时,经常需要记录一些日志信息来帮助我们诊断问题。PHP 提供了许多不同的日志...
    99+
    2023-08-06
    日志 api unix
  • 操作系统日志宝典:深入探究系统事件的真相
    日志记录机制 操作系统日志事件是通过称为系统日志守护进程的组件捕获的,该组件负责收集和存储来自各种来源的消息。这些来源包括应用程序、内核和系统组件。日志记录级别(例如信息、警告、错误)决定了消息的严重性。 日志文件类型 常见的操作系统日志...
    99+
    2024-04-02
  • 你真的理解Java中的ArrayList吗
    目录1. 为什么需要ArrayList?2. ArrayList底层是如何实现的?3. 结合源码分析主要成员变量4. 个人的一点总结1. 为什么需要ArrayList? 图1...
    99+
    2024-04-02
  • java的泛型你真的了解吗
    目录泛型的概述和优势自定义泛型类自定义泛型方法自定义泛型接口泛型通配符、上下限总结泛型的概述和优势 泛型概述 泛型:是JDK5中引入的特性,可以在编译阶段约束操作的数据类型,并进行检...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作