Spring Boot Logback应用日志

Spring Boot实战之配置使用Sentry上报错误日志(二) Spring Boot实战之配置使用Sentry上报错误日志(二) 本文介绍在spring boot中配置使用sentry sdk,上报错误日志。 关于sentry server的安装配置参考上一篇博文Spring Boot实战之配置使用Sentry上报错误日志(一) 本文示例在Spring Boot实战之配置使用Logback进行日志记录的基础上进行修改 1、修改po 阅读详情

2015-09-08 19:57 7673人阅读 评论(0) 收藏 举报
.
分类:
Spring Boot(51)
.

目录(?)[+]

日志对于应用程序来说是非常重要的,Spring框架本身集成了不少其他工具,我们自身的应用也会使用到第三方库,所以我们推荐在Spring应用中使用SLF4J/Logback来记录日志。

SLF4J与Logback简介

SLF4J——Simple Logging Facade For Java,它是一个针对于各类Java日志框架的统一Facade抽象。Java日志框架众多——常用的有java.util.logging, log4j, logback,commons-logging, Spring框架使用的是Jakarta Commons Logging API (JCL)。而SLF4J定义了统一的日志抽象接口,而真正的日志实现则是在运行时决定的——它提供了各类日志框架的binding。

Logback是log4j框架的作者开发的新一代日志框架,它效率更高、能够适应诸多的运行环境,同时天然支持SLF4J。

Spring Boot Logging

Spring Boot实现了一套日志系统——它能够根据类路径上的内容来决定使用哪一种日志框架,logback是最优先的选择。配置了logback.xml可以利用Spring Boot提供的默认日志配置:

<?xml version="1.0" encoding="UTF-8"?><configuration>    <include resource="org/springframework/boot/logging/logback/base.xml"/>    <logger name="org.springframework.web" level="DEBUG"/></configuration>

这样就定义了一个<logger>捕获org.springframework.web的日志,日志级别是DEBUG,base.xml内容如下:

<included>    <include resource="org/springframework/boot/logging/logback/defaults.xml" />    <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>    <include resource="org/springframework/boot/logging/logback/console-appender.xml" />    <include resource="org/springframework/boot/logging/logback/file-appender.xml" />    <root level="INFO">        <appender-ref ref="CONSOLE" />        <appender-ref ref="FILE" />    </root></included>

Spring Boot的日志系统预先定义了一些系统变量:

  • ${PID},当前进程ID
  • ${LOG_FILE},Spring Boot配置文件中logging.file的值
  • ${LOG_PATH}, Spring Boot配置文件中logging.path的值

同时默认情况下包含另个appender——一个是控制台,一个是文件,分别定义在console-appender.xml和file-appender.xml中。同时对于应用的日志级别也可以通过application.properties进行定义:

logging.level.org.springframework.web=DEBUGlogging.level.org.hibernate=ERROR

这等价于在logback.xml配置appender的日志级别。

ConsoleAppender

Logback使用appender来定义日志输出,在开发过程中最常用的是将日志输出到控制台:

<appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">  <encoder>    <Pattern>.%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg %n</Pattern>  </encoder>  <filter class="ch.qos.logback.classic.filter.ThresholdFilter">    <level>TRACE</level>  </filter></appender>

<encoder>表示对日志进行编码:

  • %d{HH:mm:ss.SSS}——日志输出时间
  • %thread——输出日志的进程名字,这在Web应用以及异步任务处理中很有用
  • %-5level——日志级别,并且使用5个字符靠左对齐
  • %logger{36}——日志输出者的名字
  • %msg——日志消息
  • %n——平台的换行符

在这种格式下一条日志的输出结果如下:

0:12:51.012 [qtp231719230-45] DEBUG o.c.d.r.util.LoggingResponseFilter

RollingFileAppender

另一种常见的日志输出到文件,随着应用的运行时间越来越长,日志也会增长的越来越多,将他们输出到同一个文件并非一个好办法。RollingFileAppender用于切分文件日志:

<appender name="dailyRollingFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">  <File>/data/log/app.log</File>  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">    <!-- daily rollover -->    <FileNamePattern>rest-demo.%d{yyyy-MM-dd}.log</FileNamePattern>    <!-- keep 30 days' worth of history -->    <maxHistory>30</maxHistory>           </rollingPolicy>  <encoder>    <Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{35} - %msg %n</Pattern>  </encoder>        </appender>

其中重要的是rollingPolicy的定义,上例中<FileNamePattern>rest-demo.%d{yyyy-MM-dd}.log</FileNamePattern>定义了日志的切分方式——把每一天的日志归档到一个文件中,<maxHistory>30</maxHistory>表示只保留最近30天的日志,以防止日志填满整个磁盘空间。同理,可以使用%d{yyyy-MM-dd_HH-mm}来定义精确到分的日志切分方式。

Sentry

Sentry是一个统一的日志跟踪平台,在传统的日志管理中,都是在服务器上通过tail, vim等工具查看日志,并且不同的日志位置也个不相同,而Sentry则是将这些日志(主要是错误日志)通过统一的接口收集起来,并且提供跟踪、管理的功能,使得应用程序的错误、Bug能够即时被解决。

Sentry提供了Java库——Raven Java,Java应用程序能够在捕获异常后将其发送到Sentry服务器中,另一方面它包含了各类日志框架的支持,以Logbakc为例:

<dependency>    <groupId>net.kencochrane.raven</groupId>    <artifactId>raven-logback</artifactId>    <version>6.0.0</version></dependency>

在logback.xml中定义appender:

<configuration>    <appender name="Sentry" class="net.kencochrane.raven.logback.SentryAppender">        <dsn>https://publicKey:secretKey@host:port/1?options</dsn>        <tags>tag1:value1,tag2:value2</tags>        <!-- Optional, allows to select the ravenFactory -->        <!--<ravenFactory>net.kencochrane.raven.DefaultRavenFactory</ravenFactory>-->    </appender>    <root level="warn">        <appender-ref ref="Sentry"/>    </root></configuration>

我们推荐在这个<appender>中加入<filter>用于过滤ERROR级别的日志。

顶
0
踩
0
 
 
我的同类文章
Spring Boot(51)
更多文章
别再让日志拖慢你的Spring Boot应用!手把手教你配置logback异步日志(附性能对比数据) 本文详细介绍了如何通过配置Logback异步日志优化Spring Boot应用性能,包括同步日志的性能陷阱、异步日志核心机制解析、生产级配置方案与性能调优。通过实际案例和性能对比数据,展示了异步日志在高并发场景下的显著优势,帮助开发者提升应用吞吐量和响应速度。 阅读详情

相关推荐

springboot使用logback分业务记录日志案例

springboot使用logback记录业务日志案例摘要使用logback需要的依赖编写logback-spring.xml代码里如何应用查看结果 摘要 为了我们的项目在线上排查问题,我们会记录日志文件,或者我们会根据业务记录用户行为,今天要说的是通过不同业务 记录不同的日志文件、根据日期和大小切分日志文件 使用logback需要的依赖 <dependency> <gr...

weixin_40093938的博客 1190

132_Springboot总是会自动在/tmp/spring.log生成日志文件问题处理

原因是项目配置文件中有如下引用: <include resource="org/springframework/boot/logging/logback/base.xml" /> 这个里面内容: <included> <include resource="org/springframework/boot/logging/logback/defaults...

谦虚的兔子的博客 6020

使用Logback生成Spring Boot应用的日志文件

在Spring Boot应用中,日志记录是非常重要的,它可以帮助我们跟踪应用的运行状态、调试问题以及监控应用的性能。Logback是一个功能强大的日志记录框架,它提供了灵活的配置选项和高性能的日志记录功能。我们首先添加了Logback的依赖,然后创建了Logback的配置文件,指定了日志文件的格式和位置。通过Logback的配置和使用,我们可以方便地生成和管理应用的日志文件,从而更好地监控和调试我们的Spring Boot应用。接下来,我们可以在Spring Boot应用中使用日志记录功能。

YmsNet的博客 153

springboot日志框架配置(按日志级别输出到文件)

一、默认配置 springboot默认的日志门面是SLF4J ,日志框架是Logback 如果在springboot的resources目录下配置 logback-spring.xml,logback-spring.groovy,logback.xmlorlogback.groovy 这几个文件的话,spring就不在使用默认的日志配置 二、日志配置及输出演示 1.代码 <?xml version="1.0" encoding="UTF-8" ?> <confi...

qq_36715887的博客 1481

使用Logback将日志发送到Kafka

在Spring Boot应用程序中,日志记录是一个关键的方面,因为它可以帮助我们追踪问题、监控应用程序的行为以及进行故障排除。Logback是一个功能强大的日志框架,它提供了丰富的配置选项和灵活的日志记录能力。这样,我们可以集中应用程序的日志,并在集中的位置进行存储和分析。在上面的示例中,我们使用了一个简单的模式,包括日期、线程、日志级别、日志记录器和消息。在上面的示例中,我们将根级别设置为INFO,并将其附加到名为KAFKA的附加器。当你运行应用程序时,日志事件将被发送到配置中指定的Kafka服务器。

DeoSql的博客 802

CloudCompare实战:5分钟搞定点云数据预处理(含常见格式转换技巧)

本文提供了一套基于CloudCompare的5分钟点云数据预处理实战指南。文章详细讲解了如何利用这款开源工具,快速完成点云数据的格式转换(如LAS转PLY)、统计离群值降噪、体素网格下采样以及交互式裁剪等核心操作,帮助用户高效清理和规整杂乱数据,为后续分析建模奠定基础。

weixin_29207533的博客 477

SpringBoot_日志-指定日志文件和日志Profile功能

这也只能改个别的配置,Springboot对日志到底是怎么样的呢 spring-boot-1.5.12.RELEASE.jar 如果你用logback日志文件是什么样的org.springframework.boot.logging.logback.base.xml <!-- Base logback configuration provided for compatibility ...

Leon_Jinhai_Sun的博客 567

Gamit10.71添加新的天线类型

添加新的天线类型需要涉及到四个文件:antmod.dat,rcvant.dat,guess_rcvant.dat,hi.dat。 注意:格式要一致!!! 举例说明,我要添加一个JCA229的天线(带JCAD天线罩),对应接收机使用的是南方的South Net-S9。

Penny的博客 2713

spring boot logback_让你的spring-boot应用日志随心所欲--spring boot日志深入分析

1.spring boot日志概述spring boot使用Commons Logging作为内部的日志系统,并且给Java Util Logging,Log4J2以及Logback都提供了默认的配置。如果使用了spring boot的Starters,那么默认会使用Logback用于记录日志。2.spring boot日志默认配置我们启动一个空的spring-boot项目看一下控制台的日志控制台...

weixin_39812186的博客 365

AI应用安全 - Prompt注入攻击

随着大模型的爆火,各行各业都在使用大模型进行智能化改造。但是如何做一个可靠的大模型应用,就需要考虑各种安全问题。本文主要介绍一种常见的安全问题,即prompt注入攻击,并介绍一些防范手段。Prompt Injection Attack(提示注入攻击)是针对大型语言模型(LLM)的一种新兴安全威胁,攻击者通过精心构造的输入提示(prompt)来操纵模型行为,使其产生非预期输出或执行恶意操作。它主要包括两种注入方式,一是直接注入,而是间接注入。

sinat_28694519的博客 1932

STK传感器配置全攻略:从光学到雷达的7种视场类型详解(附避坑指南)

本文详细解析了STK软件中传感器的7种视场类型,从基础的Simple Conic、Complex Conic到高级的SAR与EOIR,提供了完整的配置步骤与实战避坑指南。重点阐述了雷达、光学等不同物理设备的建模选择逻辑,并针对常见的“No Access”等报错问题给出了系统性的排查方案,帮助工程师高效完成卫星系统设计与任务分析。

weixin_29232507的博客 229

logback日志打印出方法_spring boot默认日志框架(logback)解说

Java的logback日志框架Logback日志框架介绍Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access:logback-core:其它两个模块的基础模块。logback-classic:log4j的一个 改良版本。此外logback-classic完整实现SLF4...

weixin_39814369的博客 389

实战演练:用wvp-GB28181-pro + ZLMediaKit搭建一个可用的国标视频监控测试环境(附设备模拟器对接)

本文详细介绍了如何使用wvp-GB28181-pro和ZLMediaKit在Ubuntu系统上搭建GB28181视频监控测试环境。从环境准备、组件解析到核心服务部署与设备模拟器对接,提供完整的实战指南,帮助开发者快速构建可验证的监控系统。

weixin_42692935的博客 580

15.<Spring Boot 日志>

15.<Spring Boot 日志>

425

从网格划分到端口接地:一份给ADS新手的Momentum RF仿真避坑实操指南

本文为ADS新手提供Momentum RF仿真的实用指南,涵盖网格划分、端口接地、特殊结构处理等关键设置技巧。通过30-50 cells/λ原则、1/10波长限制等黄金法则,帮助用户平衡仿真精度与效率,避免常见错误,提升电磁仿真结果的准确性。

weixin_33692284的博客 506

达梦数据库导入报错:[警告]服务器与文件内数据的 CASE_SENSITIVE 参数不匹配,成功终止导入, 但出现警告dimp V8,本地编码:PG_GBK, 导入文件编码:PG_UTF8

达梦数据库管理系统的最新版本是8.0版本,简称DM8。DM8采用全新的体系架构,在保证大型通用的基础上,针对可靠性、高性能、海量数据处理和安全性做了大量的研发和改进工作,极大提升了达梦数据库产品的性能、可靠性、可扩展性,能同时兼顾OLTP和OLAP请求,从根本上提升了DM8产品的品质。达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM。[警告]服务器与文件内数据的 CASE_SENSITIVE 参数不匹配,成功终止导入, 但出现警告。4.无视警告,输入y,回车。

十三月的博客 1万+

spring boot 使用logback 保存日志

从《spring boot 使用AOP处理请求》这篇文章中,我们使用aop获取到了相关的日志,但是我们想要将这些请求的日志保存起来,以便出现问题查看log。这里我推荐使用logback,在Spring Boot中使用Logback很简单,logback可以让我们更加方便地对日志进行打印和保存&lt;?xml version="1.0" encoding="UTF-8" ?&gt; &lt;con...

qq_15452971的博客 830

在Ubuntu上安装Node.js编程

在Ubuntu操作系统上安装Node.js是非常简单的,本文将为您提供详细的安装步骤。这是一个简单的Node.js HTTP服务器示例,它将在本地主机的端口3000上监听请求,并返回"Hello, World!npm是Node.js的包管理器,您可以使用它来安装和管理Node.js模块。您已成功在Ubuntu上安装了Node.js,并创建并运行了一个简单的Node.js应用程序。现在,您已经成功安装了Node.js和npm,让我们创建一个简单的Node.js应用程序并运行它。如有任何疑问,请随时提问。

CodeNexus的博客 3524

spring boot 中logback日志输出到RabbitMq中

最近在接口项目开始使用微服务设计构架,使用的是现在流行的spring cloud技术栈。 网关做权限,限流,日志记录等前置统一入口。在网关统一记录请求及相应日志,单实例的时候情况下,没有问题,但是想到网关压力比较大,于是决定启动多个实例。但是为了查询日志方便,多实例记录的日志打算不分开,还是记录到同一个文件中(按天分割),看到这里可能有人会问,分布式日志收集,为什么不用ELK呢?我们是有ELK系...

chen846262292的专栏 6255

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: 【SSO单点系列】(1):CAS4.0 环境的搭建
下一篇: JavaScript 获取客户端计算机硬件及系统信息
杜引强
博客等级 码龄13年 806粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值