首页 > 其他分享 >SpringBoot-日志系统

SpringBoot-日志系统

时间:2023-08-04 13:22:15浏览次数:45  
标签:logging SpringBoot boot 系统 org 日志 logback log4j

1. Logback 介绍

  • Logback 是由 log4j 创始人设计的又一个开源日志组件
  • Logback 当前分成三个模块:logback-core,logback- classic 和 logback-access
  • logback-core 是其它两个模块的基础模块,类似与 springframework
  • logback-classic 是 log4j 的一个改良版本。此外 logback-classic 完整实现 SLF4J API。使你可以很方便地更换成其它日志系统如 log4j 或 JDK14 Logging
  • logback-access 访问模块与 Servlet 容器集成提供通过 Http 来访问日志的功能

2. log4j

和 SpringBoot 集成的 log4j 依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j</artifactId>
    <version>1.3.8.RELEASE</version>
</dependency>

3. SLF4J

Simple Logging Facade for Java(SLF4J)用作各种日志框架(例如java.util.logging,logback,log4j)的简单外观或抽象,允许最终用户在部署时插入所需的日志框架。

参考:https://blog.csdn.net/qq_39326472/article/details/122569587

4. SpringBoot 日志系统

1. 日志门面

日志门面:是对不同日志框架提供的一个门面封装,可以在部署的时候不修改任何配置即可接入一种日志实现方案。

1. common-logging
由 appach 提供的一个通用的日志接口。常见的使用代码:

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
 
public class A {
	private static Log log = LogFactory.getLog(A.getClass());
    log.info("参数:" + name);
}

2. slf4j
slf4j全称为Simple Logging Facade for JAVA,java简单日志门面。类似于Apache Common-Logging,是对不同日志框架提供的一个门面封装,可以在部署的时候不修改任何配置即可接入一种日志实现方案。

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

@Service
public class LogServiceImple implements LogService {

    private static final Logger log = LoggerFactory.getLogger(LogServiceImple.class);

    @Override
    public String creatName(String name) {
        log.info("参数:{}", name);
        return name + "是二货!";
    }
}

也可以结合 lombok 注解 @Slf4j 使用

@Slf4j
@Service
public class LogServiceImple implements LogService {
    @Override
    public String creatName(String name) {
        log.info("参数:{}", name);
        return name + "是二货!";
    }
}

Slf4j 相比 Common-logging,个人感觉就是多了 log.info("参数:{}", "张三") 这种使用 {} 填充参数用法,Common-logging 只能拼接了,Slf4j 也是我们常用的,两种日志门面都在 spring-boot-start 中有,所有都可以直接使用。

2. 日志实现

相比上面的 Slf4j 和 Common-logging 两种日志门面,我们实际需要日志的实现,常用的就是 log4j 和 logback 了。Springboot 默认使用 logback,也是推荐使用的,我们可以不做修改。

当需要修改的时候,只需修改 pom 相关的 starter

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <!-- 排除自带的logging依赖 -->
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <!--添加 log4j 依赖-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j</artifactId>
        <version>1.3.8.RELEASE</version>
    </dependency>
</dependencies>

这样就修改 log4j 作为日志系统的底层实现,使用方法不用修改。官方建议使用 logback

3. 日志格式说明

4. 日志级别

日志级别可以帮助我们筛选信息,从而节省程序员筛选日志的时间,日志级别可以控制不同环境下,打印日志的详细程度,如开发环境我们需要详细的日志信息,而线上环境我们为了性能,就打印少量的日志

  • trace:级别最低
  • debug:调试级别的,常用于跟踪程序的进展
  • info:普通的打印信息(默认的日志级别)
  • warn:警告级别,不影响使用,但应该注意
  • error:错误级别,错误日志信息打印
  • fatal:致命级别,因代码异常导致程序退出,级别最高

日志的级别越高,打印的日志信息就越少

设置 SpringBoot 日志级别:默认 info

logging:
  level:
    # 全局日志级别
    root: info
    # 指定包的日志级别
    com.demo.service: warn

5. 持久化日志

将日志打印到固定路径中:

logging:
  file:
    path:  D:\gaox\logs

将日志打印到固定文件中:

logging:
  file:
    name: D:\gaox\logs\test.txt

6. 日志配置

logback 默认读取 logback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy 几个配置文件,放在 src/main/resource 下即可。也可以自己指定配置文件:

logging.config=classpath:logging-config.xml

For Example: logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration  scan="true" scanPeriod="60 seconds" debug="false">
    <contextName>logback</contextName>
    <property name="log.path" value="/logs/xxxx" />
    <!--输出到控制台-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
             <level>ERROR</level>
         </filter>-->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!--输出到文件-->
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/logback.%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="info">
        <appender-ref ref="console" />
        <appender-ref ref="file" />
    </root>

    <!-- logback为java中的包 -->
    <logger name="com.xxx"/>
    <!--logback.LogbackDemo:类的全路径 -->
    <logger name="com.xxx.xxx.Test" level="WARN" additivity="false">
        <appender-ref ref="console"/>
    </logger>
</configuration>

标签:logging,SpringBoot,boot,系统,org,日志,logback,log4j
From: https://www.cnblogs.com/cnff/p/17603955.html

相关文章

  • nginx 日志 failed (13: Permission denied) (失败:权限被拒绝)
    原文链接:https://blog.csdn.net/fengxiaolu311/article/details/124685505Nginx查看日志报错:(13:Permissiondenied)tail-f/var/log/nginx/error.logopen()"/var/log/cyberwing-webui-20220507.log"failed(13:Permissiondenied)whileloggingrequest12解决办法1、查......
  • ios系统苹果手机如何跟安卓一样开启微信分身
    iOS(iPhone操作系统)是由苹果公司开发的移动操作系统,主要用于iPhone、iPad、iPodTouch等设备。iOS在安全性方面非常重视,采用了多层次的安全措施,包括设备加密、应用沙盒、TouchID(指纹识别)和FaceID(面部识别)等功能,以保护用户的数据和隐私。同时腾讯对苹果手机的微信分身一直也没啥......
  • 【现网事故】记一次多系统调用,并发冲突、请求放大导致的生产问题
    事故现象生产环境,转账相关请求失败量暴增。直接原因现网多个重试请求同时到达svr,导致内存数据库大量返回时间戳冲突。业务方收到时间戳冲突,自动进行业务重试,服务内部也存在重试,导致流量放大。转账首先我们一起了解一下转账。转账请求在支付场景中的应用频率非常高,它是现代金......
  • 一种新的告警收敛方式“先知预警”,为您的系统健康护航 | 京东云技术团队
    前言简介买基金,上京东基金交易系统是用户使用京东金融APP进行基金交易的核心支撑系统,每天有数十亿元的交易额。在大额的交易面前,系统的稳定性尤其重要,同时基金业务比较复杂,为保障每个地方的稳定,告警埋点很多,加上各种日终检查,看似很完美,实际却有了新的问题,因告警太多,日检滞后,而无法......
  • Java面试题 P59:微服务篇:分布式系统理论-CAP和BASE
           ......
  • 带你认识数仓的监控系统TopSQL
    本文分享自华为云社区《GaussDB(DWS)TopSQL总结》,作者:nullptr_。TopSQL背景TopSQL为DWS的监控系统,记录DWS中各个作业、算子级别的资源使用数据、耗时数据,包括下盘信息、内存、网络、耗时、警告、基础信息等作业执行的数据。TopSQL简介TopSQL分为实时表和历史表,实时表主要展......
  • 下一代MES系统架构分析与选型参考
    本文分享自华为云社区《工业互联网系列(十一):下一代MES系统架构分析与选型参考》,作者:云起MAE。MES市场尚处于“功能机”混战年代,市场集中度不高,大部分厂商人均产出不过几十万,分析原因离不开:MES系统的标准化程度很低、项目实施周期长、系统难以准确满足企业个性化需求导致项目上线失败......
  • 系统架构设计师笔记第43期:云原生架构案例分析
    云原生架构是一种软件架构和开发方法论,旨在利用云计算、容器化和微服务等技术,构建高度可伸缩、弹性和可靠的应用程序。它的设计理念是将应用程序与底层的基础设施解耦,以实现更高的灵活性、可维护性和可扩展性。云原生架构的核心特点包括:微服务架构:将应用程序拆分为一组小型、自治的......
  • 高效构建 vivo 企业级网络流量分析系统
    作者:vivo互联网服务器团队-MingYujia随着网络规模的快速发展,网络状况的良好与否已经直接关系到了企业的日常收益,故障中的每一秒都会导致大量的用户流失与经济亏损。因此,如何快速发现网络问题与定位异常流量已经成为大型企业内必须优先解决的问题,诸多网络流量分析技术也同时应运......
  • 2023年下半年杭州/宁波/深圳软考信息系统项目管理师报名
    信息系统项目管理师是全国计算机技术与软件专业技术资格(水平)考试(简称软考)项目之一,是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试,既属于国家职业资格考试,又是职称资格考试。信息系统项目管理师,属于软考三个级别中的“高级”。  【报考要求】 不设学历与资历......