学习日志以及日志的前世今生

2023-05-16

先看这个链接 https://www.cnblogs.com/lalalazar/p/15694889.html
提到log4j就不得不提其主要贡献者,ceki gulcu 从1996年开始出来日志

简单总结:

log4j 最早出现 产品 --------------》apache收录1996
jul (java util logging) 产品------------ sun公司java母公司 2002
JCL (jakarta commons logging)接口 日志抽象层--------apache,打算一统日志江湖,指定日志标准
Slf4j(simple Logging Facade for java) 接口----------ceki大佬,-----桥接包(适配器)出现
logback 产品 ---------ceki
log4j2 产品+接口 -----------apache 2012-------》Log4j 2不兼容Log4j 1
log4j-api 接口
og4j-core 产品

在这里插入图片描述

总结到这可以发现:

接口给了无限可能,不写接口没有任何扩展性可言
没有什么问题是加一层适配器解决不了的,如果有那就再加一层。
连接了日志的整个框架,在使用的时候我们有什么启发呢
使用日志接口的api而不是日志产品的api,这样也符合依赖倒置原则
依赖选择一个即可
把日志产品依赖设置为 optional 和runtime scope 其中optional是为了依赖不会被传递,比如别人引用了这个jar,就会被迫使用不想使用的依赖

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>${log4j.version}</version>
    <optional>true</optional>
</dependency>

而scope设置为runtime,是可以保证日志的产品的依赖只有在运行时需要,编译时不需要,这样,开发人员就不会在编写代码的过程中使用到日志产品的API了

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>${log4j.version}</version>
    <scope>runtime</scope>
</dependency>

再加深入了解一点具体的名词:适配器桥接器

https://www.shuzhiduo.com/A/D854DDZQ5E/

日志配置文件的书写
https://www.cnblogs.com/duyinqiang/p/15903938.html

日志的五种级别

日志级别
日志一共分成5个等级,从低到高分别是:(有的说更多的级别,只记住这5个就成了,其他用不到)

debug
info
warming
error
fatal 致命的;导致失败的,灾难性的 (CRITICAL critical 美 /'krɪtɪkl/ 至关重要的)

说明:
DEBUG:详细的信息,通常只出现在诊断问题上,程序调试bug时使用
INFO:确认一切按预期运行,程序正常运行时使用
WARNING:程序未按预期运行时使用,但并不是错误,如:用户登录密码错误。一个迹象表明,一些意想不到的事情发生了,或表明一些问题在不久的将来(例如。磁盘空间低”)。这个软件还能按预期工作。
ERROR:更严重的问题,软件没能执行一些功能。程序出错误时使用,如:IO操作失败
FATAL(CRITICAL)代表发生了最严重的错误,会导致整个服务停止(或者需要整个服务停止)。简单地说就是服务死掉了。

这5个等级,也分别对应5种打日志的方法: debug 、info 、warning 、error 、critical。
默认的是warning等级,当在warning或warning之上等级的才记录日志信息。
日志等级从低到高的顺序是: debug < info < warning< error< critical
在这里插入图片描述

Log4j建议只使用四个级别,优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。
通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。
比如在这里定义了INFO级别, 则应用程序中所有DEBUG级别的日志信息将不被打印出来。

优先级高的将被打印出来。项目上生产环境时候一定得把debug的日志级别重新调为warn或者更高,避免产生大量日志。

后面有空把日志的书写格式写出来
Spring Boot中的几种写法。
debug样式的
log4j2样式的

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

学习日志以及日志的前世今生 的相关文章

随机推荐

  • SQL查询分年龄段、学历查询(结果类似一张表格)

    SELECT CASE WHEN age lt 30 THEN 34 lte29 34 WHEN age BETWEEN 30 AND 40 THEN 34 30 39 34 WHEN age BETWEEN 40 AND 50 THEN
  • Django的初始化

    一 xff0c 安装虚拟环境 python2 pip install virtualenv python3 pip3 install virtualenv 安装Virtualenvwrapper pip install virtualenv
  • ubuntu 出现 core dump 和 segment fault 错误

    在Linux环境下执行程序的时候 xff0c 有的时候会出现段错误 xff08 segment fault xff09 xff0c 同时显示core dumped 就像下面这样 xff1a 1 15428 segmentation faul
  • Linux实现文件定期本地备份/异地备份/删除备份的脚本

    一 背景 1 总会出出现环境上的数据丢失 xff0c 在没有备份的情况下会非常的被动 xff0c 不管是由于病毒还是人为的原因造成的程序 数据被删除 xff0c 有时候后悔已经来不及 xff0c 不如提前做到数据的备份 xff0c 而异地备
  • strace -f strace ls 引发的问题

    strace 是Linux下常用的跟踪程序系统调用的工具 strace简介 可使用 strace lt cmd gt 来跟踪 cmd 所使用的系统调用 xff0c 原理是 strace 进程 fork 一个子进程并使用 ptrace 系统调
  • Ubuntu22.04搭建Pytorch框架深度学习环境+安装Miniconda+安装CUDA与cuDNN

    Linux搭建深度学习环境 以Ubuntu为例 xff0c 从零搭建Pytorch框架深度学习环境 1 Ubuntu安装 1 1 系统下载 访问地址ubuntu官网 1 2 启动盘制作 访问ultraiso官网 1 2 1打开镜像 1 2
  • ARM 立即寻址之立即数的形成 —— 如何判断有效立即数

    依据指令中给出的操作数的不同格式 xff0c ARM 指令系统具有 8 种常见的寻址方式 我们这次就来讨论一下立即寻址 文章目录 立即寻址的特点立即数形式合法立即数立即寻址机器指令格式指令解析判断方法例子 0x0000f200例子 0x23
  • 调用函数返回一个场景renderer并实现多场景在同一窗口显示

    问题 xff1a 函数调用想要返回renderer场景 智能指针类型同样也可以作为函数的返回值 正确的写法类似 xff1a vtkSmartPointerMyFunction vtkSmartPointer myObject 61 vtkS
  • 完美解决Python与anaconda之间的冲突问题,你值得拥有

    anaconda指的是一个开源的Python发行版本 xff0c 其包含了conda Python等180多个科学包及其依赖项 因为包含了大量的科学包 xff0c Anaconda 的下载文件比较大 xff08 约 515 MB xff09
  • win10和linux关闭端口的命令

    win10的相关命令 1 查 xff1a netstat ano findstr 8080 2 杀 xff1a taskkill PID 5616 F 也可以使用netstat ano 查看所有的端口 netstat命令详解 xff1a n
  • nmap

    nmap nmap 简介 xff1a namp也称Network Mapper 是一款多平台的网络连接扫描软件 xff0c 可以探测计算机网络上的主机和服务 在渗透初期为了绘制目标网络拓扑图 xff0c 需要到Nmap对目标网络发送特定的数
  • 日期和时间格式

    时间和日期格式 span class token keyword import span java span class token punctuation span util span class token punctuation sp
  • JDBC优化

    三层架构 JDBC事务 DBUtils 今日内容 1 三层架构 2 三层架构结合事务 3 ThreadLocal解决事务问题 4 DAO通用封装方法 5 DbUtils的使用 ooOoo o8888888o 88 34 34 88
  • 关于x86_64和x32和x86和-386和32位还是64位的区分 指令集的学习

    这里写自定义目录标题 一 xff0c 查到的知识查看linux内核信息查看linux版本信息查看当前的系统位数其他搜索到的信息 指令集和指令集架构的区分 关于x86 64和x32和x86和 386和32位还是64位的区分 一 xff0c 查
  • C++并发编程

    C 43 43 11多线程 xff1a 1 多线程概念 C 43 43 11新增了对多线程的支持 xff0c 提供了 lt atomic gt lt mutex gt 和 lt thread gt 初步支持 xff0c 但仍不完美 使用并发
  • go语言入门二 代码试验 api在线编程

    试验 一个试验代码 span class token comment 要求开发一个hello go程序 span span class token keyword package span main span class token key
  • vscode go 2022-3-20最新测试的插件安装失败的解决办法

    前期准备工作 可以直接看最下面 xff0c 我有把bin中的exe文件放到网盘 tools文件也放网盘了 伸手党请帮忙点个赞 环境变量的配置 xff0c 直接上图吧 xff0c 今天配置这玩意太心累了 高级系统设置 环境变量的配置 还有一个
  • go语言import报错处理

    import 认识 go的import有两种形式 第一种是GOPATH下项目文件管理 第二种是Go Modules 初学状态我用的vscode 在两个文件夹中调用全局变量 在地址引用时出现错误 通过查询知道了两种方法之间的区别就在与GO11
  • MYSQL多表查询面试题三

    1 显示所有员工的姓名 xff0c 部门号和部门名称 span class token keyword SELECT span e span class token punctuation span last name span class
  • 学习日志以及日志的前世今生

    先看这个链接 https www cnblogs com lalalazar p 15694889 html 提到log4j就不得不提其主要贡献者 xff0c ceki gulcu 从1996年开始出来日志 简单总结 log4j 最早出现