日志整理

分享思路

  • 日志前言
  • 日志框架的简单介绍
  • 日志级别
  • 日志demo整合
  • springboot的日志加载过程
  • slf4j的加载过程
  • Log4j2的标签详解

日志前言

  1. 什么是日志 ?
    日志用来记录用户操作、系统运行状态等,是一个系统的重要组成部分。
  2. 日志的作用 ?
      好的日志可以帮助我们:了解线上系统的运行状态;快速准确定位线上问题;发现系统瓶颈;预警系统潜在风险;挖掘产品最大价值……
      不好的日志导致:对系统的运行状态一知半解;系统出现问题无法定位,或需要花费巨大的时间和精力;无法发现系统瓶颈;不知优化从何做起;无法对错误进行监控和报警;对挖掘用户行为和提升产品价值毫无帮助……
  3. 日志分类
    日志从功能来说,可分为诊断日志统计日志审计日志
  • 诊断日志
    3.1.1 请求的入口出口
    3.1.2 服务调用和返回
    3.1.3 资源消耗操作
    3.1.4 容错行为
    3.1.5 程序异常
    3.1.6 后台操作
    3.1.7 启动关闭、配置加载
  • 统计日志
    3.2.1用户统计访问
    3.2.2计费日志
  • 审计日志
    3.3.1按照指定格式输出日志
    3.3.2按照需求输出日志

    注意:日志我们需要记录我们正好需要的日志信息,尽量避免繁杂无用的日志信息出现

日志框架的简单介绍

目前在在市场上目前的日志框架有:JCL(Jakarta Commons Logging)、JUL(Java util Logging)、Jboss-LoggingSLF4JLog4jLogbackLog4j2

日志门面框架JCLSLF4J
日志实现框架JULLog4JLogbackLog4j2

Remember a person and an institution:
Ceki Gulcu -->SLF4J、Log4J、Logback
Apache -->JCL、Log4J2

  • JCL:采用适配器模式,是Java自身的一些包用了JUL,提供一套API来实现不同Logger之间的切换。JCL致命的缺点就是算法复杂,出现问题难以排除。
  • SLF4J:简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。解决了JCL的缺点。
  • JUL:是JDK 中自带的log功能,JDK1.4 才开始加入(2002年),但使用不够广泛。早期存在性能问题,到JDK1.5上才有了不错的进步,与Logback/Log4j2相比还是有所不如的。
  • Log4J:2001年由Ceki Gulcu发布,在2014年12月发行了最后一版。springboot从1.4版本之后不再支持。短板在于它的性能问题。
  • Logback:与Log4j相比,Logback重新了内核,使它的性能提升了很多,大约是Log4j的10倍,同时占用更小的内存,并且完整的实现了SLF4J API是你可以很方便的切换日志框架。
  • Log4j2:Log4j的升级版本,比Log4j 1.x有重大改进,修复了Logback中一些问题。但是不兼容Log1.x版本。Log4J2是现在最优秀的Java日志框架是Log4j2,没有之一。根据官方的测试表明,在多线程环境下,Log4j2的异步日志表现更加优秀。在异步日志中,Log4j2使用独立的线程去执行I/O操作,可以极大地提升应用程序的性能。

Logback和Log4J2性能对比

当线程数量较少时:Logback和Log4j2的性能相差无几
当线程数量较大时,很明显Log4j2的性能要10倍于Logback。Log4j2在独立应用程序中基本是无垃圾的,在web项目中是低垃圾的,减少了GC的内存消耗。
日志整理
(未完待续…)

相关文章:

  • 2021-06-02
  • 2022-12-23
  • 2021-09-25
  • 2021-12-06
  • 2022-01-17
  • 2022-12-23
  • 2021-05-29
  • 2021-06-14
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-03-31
  • 2022-12-23
  • 2022-02-12
  • 2021-08-29
相关资源
相似解决方案