当前位置:首页 > 文章列表 > 文章 > java教程 > 怎么在Springboot中使用log4j2日志

怎么在Springboot中使用log4j2日志

来源:亿速云 2024-04-03 16:09:40 0浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《怎么在Springboot中使用log4j2日志》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

常用日志框架

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

  • Log4j:Apache的一个开源项目,可以控制日志信息输送的目的地是控制台、文件、GUI组件等,可以控制每一条日志的输出格式,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。虽然已经停止维护了,但目前绝大部分企业都是用的log4j。

  • LogBack:是Log4j的一个改良版本

  • Log4j2:Log4j2已经不仅仅是Log4j的一个升级版本了,它从头到尾都被重写了

日志门面slf4j

上述介绍的是一些日志框架的实现,这里我们需要用日志门面来解决系统与日志实现框架的耦合性。SLF4J,即简单日志门面(Simple Logging Facade for Java),它不是一个真正的日志实现,而是一个抽象层( abstraction layer),它允许你在后台使用任意一个日志实现。

怎么在Springboot中使用log4j2日志

前面介绍的几种日志框架一样,每一种日志框架都有自己单独的API,要使用对应的框架就要使用其对应的API,这就大大的增加应用程序代码对于日志框架的耦合性。

使用了slf4j后,对于应用程序来说,无论底层的日志框架如何变,应用程序不需要修改任意一行代码,就可以直接上线了。

为什么选用log4j2

相比与其他的日志系统,log4j2丢数据这种情况少;disruptor技术,在多线程环境下,性能高于logback等10倍以上;利用jdk1.5并发的特性,减少了死锁的发生;

log4j2优越的性能其原因在于log4j2使用了LMAX,一个无锁的线程间通信库代替了,logback和log4j之前的队列. 并发性能大大提升。

整合步骤

引入Jar包

springboot默认是用logback的日志框架的,所以需要排除logback,不然会出现jar依赖冲突的报错。

 
 org.springframework.boot 
 spring-boot-starter-web 
  
   
   org.springframework.boot 
   spring-boot-starter-logging 
   
  
 

  
 org.springframework.boot 
 spring-boot-starter-log4j2 

配置文件

如果自定义了文件名,需要在application.yml中配置

logging:
 config: xxxx.xml
 level:
 cn.jay.repository: trace

默认名log4j2-spring.xml,就省下了在application.yml中配置

配置文件模版

log4j是通过一个.properties的文件作为主配置文件的,而现在的log4j2则已经弃用了这种方式,采用的是.xml,.json或者.jsn这种方式来做,可能这也是技术发展的一个必然性,因为properties文件的可阅读性真的是有点差。





 

 
 
 
 
 
 
 
 
 

 

 
  
  
  
  
 

 
 
  
 

 
 
  
  
  
  
  
  
  
  
  
  
 

 
 
  
  
  
  
  
  
  
  
  
  
 

 
 
  
  
  
  
  
  
  
  
  
  
 

 

 
 
 

 
 
  
 
 
 
 
  
 

 
  
  
  
  
  
 
 

配置参数简介

在这里简单介绍下常用的配置参数

日志级别

  • 机制:如果一条日志信息的级别大于等于配置文件的级别,就记录。

  • trace:追踪,就是程序推进一下,可以写个trace输出

  • debug:调试,一般作为最低级别,trace基本不用。

  •  info:输出重要的信息,使用较多

  • warn:警告,有些信息不是错误信息,但也要给程序员一些提示。

  • error:错误信息。用的也很多。

  • fatal:致命错误。

输出源

  •  CONSOLE(输出到控制台)

  • FILE(输出到文件)

格式

  • SimpleLayout:以简单的形式显示

  • HTMLLayout:以HTML表格显示

  • PatternLayout:自定义形式显示

PatternLayout自定义日志布局:

%d{yyyy-MM-dd HH:mm:ss, SSS} : 日志生产时间,输出到毫秒的时间
%-5level : 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0
%c : logger的名称(%logger)
%t : 输出当前线程名称
%p : 日志输出格式
%m : 日志内容,即 logger.info("message")
%n : 换行符
%C : Java类名(%F)
%L : 行号
%M : 方法名
%l : 输出语句所在的行数, 包括类名、方法名、文件名、行数
hostName : 本地机器名
hostAddress : 本地ip地址

Log4j2配置详解

根节点Configuration

有两个属性:

  • status

  • monitorinterval

有两个子节点:

  • Appenders

  • Loggers(表明可以定义多个Appender和Logger).

status用来指定log4j本身的打印日志的级别.

monitorinterval用于指定log4j自动重新配置的监测间隔时间,单位是s,最小是5s.

Appenders节点

常见的有三种子节点:Console、RollingFile、File

Console节点用来定义输出到控制台的Appender.

  •  name:指定Appender的名字.

  • target:SYSTEM_OUT 或 SYSTEM_ERR,一般只设置默认:SYSTEM_OUT.

  • PatternLayout:输出格式,不设置默认为:%m%n.

 File节点用来定义输出到指定位置的文件的Appender.

  •  name:指定Appender的名字.

  • fileName:指定输出日志的目的文件带全路径的文件名.

  • PatternLayout:输出格式,不设置默认为:%m%n.

 RollingFile节点用来定义超过指定条件自动删除旧的创建新的Appender.

  • name:指定Appender的名字.

  • fileName:指定输出日志的目的文件带全路径的文件名.

  • PatternLayout:输出格式,不设置默认为:%m%n.

  • filePattern : 指定当发生Rolling时,文件的转移和重命名规则.

  • Policies:指定滚动日志的策略,就是什么时候进行新建日志文件输出日志.

  • TimeBasedTriggeringPolicy:Policies子节点,基于时间的滚动策略,interval属性用来指定多久滚动一次,默认是1 hour。modulate=true用来调整时间:比如现在是早上3am,interval是4,那么第一次滚动是在4am,接着是8am,12am...而不是7am.

  • SizeBasedTriggeringPolicy:Policies子节点,基于指定文件大小的滚动策略,size属性用来定义每个日志文件的大小.

  • DefaultRolloverStrategy:用来指定同一个文件夹下最多有几个日志文件时开始删除最旧的,创建新的(通过max属性)。

Loggers节点,常见的有两种:Root和Logger.

  • Root节点用来指定项目的根日志,如果没有单独指定Logger,那么就会默认使用该Root日志输出

  • level:日志输出级别,共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < AppenderRef:Root的子节点,用来指定该日志输出到哪个Appender.

  • Logger节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。

  • level:日志输出级别,共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF.

  • name:用来指定该Logger所适用的类或者类所在的包全路径,继承自Root节点.

  • AppenderRef:Logger的子节点,用来指定该日志输出到哪个Appender,如果没有指定,就会默认继承自Root.如果指定了,那么会在指定的这个Appender和Root的Appender中都会输出,此时我们可以设置Logger的additivity="false"只在自定义的Appender中进行输出。

简单使用

public class LogExampleOther {
 private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExampleOther.class);
 
 public static void main(String... args) {
 log.error("Something else is wrong here");
 }
}

使用lombok工具简化创建Logger类

lombok就是一个注解工具jar包,能帮助我们省略一繁杂的代码。具体介绍可以看我的这篇教程。

使用lombok后下面的代码等效于上述的代码,这样会更方便的使用日志。

@Slf4j
public class LogExampleOther {
 
 public static void main(String... args) {
 log.error("Something else is wrong here");
 }
}

理论要掌握,实操不能落!以上关于《怎么在Springboot中使用log4j2日志》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

版本声明
本文转载于:亿速云 如有侵犯,请联系study_golang@163.com删除
WIN10怎样卸载netware客户服务_卸载netware客户服务的方法WIN10怎样卸载netware客户服务_卸载netware客户服务的方法
上一篇
WIN10怎样卸载netware客户服务_卸载netware客户服务的方法
Go语言包管理实践:依赖性探讨
下一篇
Go语言包管理实践:依赖性探讨
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    542次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    508次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    497次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • PPTFake答辩PPT生成器:一键生成高效专业的答辩PPT
    PPTFake答辩PPT生成器
    PPTFake答辩PPT生成器,专为答辩准备设计,极致高效生成PPT与自述稿。智能解析内容,提供多样模板,数据可视化,贴心配套服务,灵活自主编辑,降低制作门槛,适用于各类答辩场景。
    20次使用
  • SEO标题Lovart AI:全球首个设计领域AI智能体,实现全链路设计自动化
    Lovart
    SEO摘要探索Lovart AI,这款专注于设计领域的AI智能体,通过多模态模型集成和智能任务拆解,实现全链路设计自动化。无论是品牌全案设计、广告与视频制作,还是文创内容创作,Lovart AI都能满足您的需求,提升设计效率,降低成本。
    18次使用
  • 美图AI抠图:行业领先的智能图像处理技术,3秒出图,精准无误
    美图AI抠图
    美图AI抠图,依托CVPR 2024竞赛亚军技术,提供顶尖的图像处理解决方案。适用于证件照、商品、毛发等多场景,支持批量处理,3秒出图,零PS基础也能轻松操作,满足个人与商业需求。
    32次使用
  • SEO标题PetGPT:智能桌面宠物程序,结合AI对话的个性化陪伴工具
    PetGPT
    SEO摘要PetGPT 是一款基于 Python 和 PyQt 开发的智能桌面宠物程序,集成了 OpenAI 的 GPT 模型,提供上下文感知对话和主动聊天功能。用户可高度自定义宠物的外观和行为,支持插件热更新和二次开发。适用于需要陪伴和效率辅助的办公族、学生及 AI 技术爱好者。
    33次使用
  • 可图AI图片生成:快手可灵AI2.0引领图像创作新时代
    可图AI图片生成
    探索快手旗下可灵AI2.0发布的可图AI2.0图像生成大模型,体验从文本生成图像、图像编辑到风格转绘的全链路创作。了解其技术突破、功能创新及在广告、影视、非遗等领域的应用,领先于Midjourney、DALL-E等竞品。
    56次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码