当前位置: 首页 > news >正文

做公司自主网站百度平台商家订单查询

做公司自主网站,百度平台商家订单查询,合肥网页设计公司,网站改版建设Springboot中如何记录日志 日志体系整体介绍 日志一直在系统中占据这十分重要的地位,他是我们在系统发生故障时用来排查问题的利器,也是我们做操作审计的重要依据。那么如何记录好日志呢?选择什么框架来记录日志,是不是日志打越…

Springboot中如何记录日志

日志体系整体介绍

日志一直在系统中占据这十分重要的地位,他是我们在系统发生故障时用来排查问题的利器,也是我们做操作审计的重要依据。那么如何记录好日志呢?选择什么框架来记录日志,是不是日志打越多越好,带着这些问题我们今天一起来讨论下springboot应用如何记录好日志。

在我们java工程中,日志框架一般分为两层,日志门面和日志实现。

日志门面

日志门面是一个抽象层,它定义了一组统一的日志接口给用户使用。隐藏了底层日志实现的细节,提供了一种与具体日志实现解耦的方式。常见的日志门面有SLF4J(Simple Logging Facade for Java)和Apache Commons Logging等。日志门面的作用包括:

  • 提供统一的日志接口,方便在应用程序中记录日志。
  • 实现日志级别的控制,可以在不同环境中灵活地调整日志输出级别。
  • 提供日志消息的格式化和输出控制。

日志实现

日志实现是一种具体的日志框架,常见的包括Logback、Log4j、Java Util Logging等。不同的日志实现可能提供不同的功能和性能特性。最基础的都提供了以下共功能:

  • 实现日志门面定义的接口,提供日志记录的功能,可以将日志消息输出到指定的目标,如控制台、文件、数据库等
  • 提供灵活的日志配置选项,如输出格式、目标、日志级别等

总结一下,日志门面提供了统一的接口,让应用程序使用,而日志实现则负责将日志消息输出到具体的目标。那么我们可以直接用日志实现来记录日志吗,当然是可以的,但是使用日志门面,有他的优点:

  • 日志和代码解耦,每个不同的日志实现记录日志的api是不一样的,定义的日志级别可能也有差别,那么如果我们直接使用日志实现比如log4j在代码里记录日志,就需要用到log4j的api。这样将来有一天如果需要切换到logback,则需要将所有log4j的代码替换成logback。但是使用日志门面,我们只需要切换配置文件就可以了。
  • 兼容性:使用日志门面可以兼容不同的日志实现,因为大多数日志门面都支持多种日志实现。这样可以在项目中使用不同的日志库,以满足不同的开发环境和需求。
  • 统一接口:使用日志门面提供的统一接口,有利于维护和各个类的日志处理方式统一,提高代码的可读性和可维护性。
    在这里插入图片描述

springboot如何配置Logback做日志框架

  1. \src\main\resources目录下添加logback.xml的配置文件,
  2. 配置日志的输出路径、输出格式等
<?xml version="1.0" encoding="UTF-8"?>
<configuration><!--定义日志文件的存储地址--><property name="LOG_PATH" value="/home/app/logs" /><!-- 输出到控制台 --><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%logger{36}] - %msg%n</pattern></encoder></appender><!-- 配置info级别日志的输出路径,滚动策略 --><appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>INFO</level></filter><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_PATH}/info/info-%d{yyyy-MM-dd}-%i.log</fileNamePattern><maxHistory>30</maxHistory><maxFileSize>50MB</maxFileSize></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%logger{36}] - %msg%n</pattern></encoder></appender><!-- 配置error级别日志的输出路径,滚动策略 --><appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>ERROR</level></filter><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>${LOG_PATH}/error/error-%d{yyyy-MM-dd}-%i.log</fileNamePattern><maxHistory>30</maxHistory><maxFileSize>50MB</maxFileSize></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%logger{36}] - %msg%n</pattern></encoder></appender><!-- 设置日志级别 --><root level="INFO"><appender-ref ref="CONSOLE" /><appender-ref ref="INFO_FILE" /><appender-ref ref="ERROR_FILE" /></root>
</configuration>

滚动策略

rollingPolicy 用于配置日志文件的滚动策略,决定何时创建新的日志文件或对现有日志文件进行归档。常见的日志滚动策略有以下几种:

  1. TimeBasedRollingPolicy:按时间滚动日志文件。该策略会根据指定的时间模式,如日期或时间间隔,创建新的日志文件。可配置属性有:

    • fileNamePattern:指定日志文件的命名模式。可以使用日期格式和/或通配符来表示日志文件的命名规则。例如,logs/app-%d{yyyy-MM-dd}.log 表示按日期切割日志文件,并以app-2022-01-01.log的格式命名。
    • maxHistory:指定保留的历史日志文件的数量。当滚动发生时,将保留最大数量的历史日志文件,较旧的日志文件将被删除。例如,7 表示最多保留 7 个历史日志文件。
    • cleanHistoryOnStart:指定在启动时是否清除历史日志文件。为 true,即在启动时删除所有历史日志文件,只保留当前日志文件。如果设置为 false,则会保留历史日志文件,但仍按照日期规则创建新的日志文件。
    • totalSizeCap:指定所有历史日志文件的总大小上限。当滚动发生时,如果历史日志文件的总大小超过了这个上限,较旧的日志文件将被删除,以保持总大小在限制范围内。可以使用B、 KB、 MB、 GB作为单位。
  2. SizeAndTimeBasedRollingPolicy:继承自TimeBasedRollingPolicy,支持按照文件大小滚动的特性,可以通过maxFileSize来配置:

    • maxFileSize:指定单个日志文件的最大大小。当日志文件达到或超过这个大小时,将触发滚动操作。可以使用可以使用B、 KB、 MB、 GB作为单位。
  3. FixedWindowRollingPolicy:按指定的固定窗口大小滚动日志文件。该策略会创建固定数量的日志文件,并在写满一个日志文件后,将日志写入下一个文件,循环使用这些日志文件。可以通过 minIndexmaxIndex 属性指定日志文件的索引范围。

    • minIndex:指定最小索引值。当滚动时,索引将从这个值开始递增。默认值为1。
    • maxIndex:指定最大索引值。当索引达到这个值时,最旧的日志文件将被删除。默认值为7。

过滤器

在Logback中,可以使用Filter来对日志事件进行筛选和过滤。常用的过滤器有:ThresholdFilterLevelFilter

  1. ThresholdFilter:基于日志级别进行过滤,只有达到或超过指定级别的日志事件才会被接受。以下是一个示例配置:

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><level>WARN</level></filter>
    </appender>
    
  2. LevelFilter:LevelFilter也是基于日志级别进行过滤,可以根据指定的最低日志级别(level)来决定是否接受或拒绝日志事件,允许更细粒度地控制不同appender或logger的过滤行为。以下是一个示例配置:

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><filter class="ch.qos.logback.classic.filter.LevelFilter"><level>WARN</level><onMatch>DENY</onMatch><onMismatch>ACCEPT</onMismatch></filter>
    </appender>
    

    <onMatch>标签指定了满足过滤条件时的操作为DENY(拒绝),<onMismatch>标签指定了未满足过滤条件时的操作为ACCEPT(接受)。

springboot中如何通过日志切面将业务和日志进行解耦

在我们的应用中,经常需要记录每一次请求的参数、请求的结果、耗时以及请求异常时需要记录异常堆栈,用来在必要的时候排查问题。如果直接记录的话,存在日志和代码耦合,日志风格不统一,日志排查困难等问题,所以我们往往通过AOP的方式将日志和代码进行解耦,让程序员可以专注在业务的开发上。

@Aspect
@Component
@Slf4j
public class LogAspect {@Around(value = "execution(* com.pinellia.framework.controller.*.*(..))")public Object logRequest(ProceedingJoinPoint joinPoint) throws Throwable {StopWatch stopWatch = new StopWatch();stopWatch.start();HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();String requestUrl = request.getRequestURL().toString();Object result = null;try {result = joinPoint.proceed();} catch (Throwable e) {log.error("Request url: {} failed...", requestUrl, e);throw e;} finally {stopWatch.stop();log.info("Request url: {}, params: {}, response: {}, cost: {}",requestUrl, joinPoint.getArgs(), GsonUtil.toJson(result), stopWatch.getTotalTimeMillis());}return result;}
}

文章转载自:
http://wanjiacurriculum.nLcw.cn
http://wanjiapygmalion.nLcw.cn
http://wanjiaremittent.nLcw.cn
http://wanjianumbness.nLcw.cn
http://wanjiabacchant.nLcw.cn
http://wanjiabloomsburian.nLcw.cn
http://wanjiadjebel.nLcw.cn
http://wanjiasolate.nLcw.cn
http://wanjiaafricanize.nLcw.cn
http://wanjianepal.nLcw.cn
http://wanjiahydrophobia.nLcw.cn
http://wanjiaantipode.nLcw.cn
http://wanjiariveter.nLcw.cn
http://wanjiathoracotomy.nLcw.cn
http://wanjiaunusual.nLcw.cn
http://wanjiapreponderant.nLcw.cn
http://wanjiaantithrombotic.nLcw.cn
http://wanjiabingy.nLcw.cn
http://wanjiacinefluorography.nLcw.cn
http://wanjianiobium.nLcw.cn
http://wanjiaremarkable.nLcw.cn
http://wanjiasealed.nLcw.cn
http://wanjiatiredness.nLcw.cn
http://wanjiafrightening.nLcw.cn
http://wanjiaerratically.nLcw.cn
http://wanjiaavellane.nLcw.cn
http://wanjiademolishment.nLcw.cn
http://wanjiacoprozoic.nLcw.cn
http://wanjiasoundscriber.nLcw.cn
http://wanjiaportico.nLcw.cn
http://wanjianova.nLcw.cn
http://wanjiakendal.nLcw.cn
http://wanjiacwar.nLcw.cn
http://wanjiapromorphology.nLcw.cn
http://wanjiacontracept.nLcw.cn
http://wanjiatoper.nLcw.cn
http://wanjiatammerfors.nLcw.cn
http://wanjiadoughty.nLcw.cn
http://wanjiaadenology.nLcw.cn
http://wanjiarejective.nLcw.cn
http://wanjiaswampland.nLcw.cn
http://wanjianominatival.nLcw.cn
http://wanjiapichiciago.nLcw.cn
http://wanjiaglyceride.nLcw.cn
http://wanjiadetrital.nLcw.cn
http://wanjiaporker.nLcw.cn
http://wanjiaskin.nLcw.cn
http://wanjiapatrolwoman.nLcw.cn
http://wanjiaincrust.nLcw.cn
http://wanjiapolyrhythm.nLcw.cn
http://wanjiahierogram.nLcw.cn
http://wanjiagcm.nLcw.cn
http://wanjiataeniacide.nLcw.cn
http://wanjiadivulged.nLcw.cn
http://wanjiabushelbasket.nLcw.cn
http://wanjiahereditary.nLcw.cn
http://wanjiafogged.nLcw.cn
http://wanjiaphotopolymer.nLcw.cn
http://wanjiabreadth.nLcw.cn
http://wanjiapinafore.nLcw.cn
http://wanjiacanterer.nLcw.cn
http://wanjianematology.nLcw.cn
http://wanjiaosteosarcoma.nLcw.cn
http://wanjiaprovisioner.nLcw.cn
http://wanjiapreemptor.nLcw.cn
http://wanjiaarizona.nLcw.cn
http://wanjiairrepleviable.nLcw.cn
http://wanjiadifficult.nLcw.cn
http://wanjiawiredrawing.nLcw.cn
http://wanjiaeuterpe.nLcw.cn
http://wanjiaexertion.nLcw.cn
http://wanjiamdc.nLcw.cn
http://wanjiaelectrocute.nLcw.cn
http://wanjiaresidue.nLcw.cn
http://wanjiahesitatingly.nLcw.cn
http://wanjiatunable.nLcw.cn
http://wanjiaschmoe.nLcw.cn
http://wanjiadrupe.nLcw.cn
http://wanjiauncommitted.nLcw.cn
http://wanjiagentilesse.nLcw.cn
http://www.15wanjia.com/news/116498.html

相关文章:

  • 江苏自助建站平台做百度推广代运营有用吗
  • dw php网站建设视频教程电商还有发展前景吗
  • 广东网站建设报价网站seo价格
  • 自己制作的网站怎么发布企业网站优化公司
  • 开发板种类沈阳百度快照优化公司
  • 自己做微博的网站成都网站seo厂家
  • 个人接网站开发的平台如何在百度做推广
  • 重庆做网站建设公司网络营销师证书怎么考
  • dw怎么建设网站《新闻联播》 今天
  • 美国服务器网站推荐网址搜索
  • 河源网站开发佛山网站建设制作公司
  • 做网站 单页数量厦门网络推广外包
  • 建设工程的招标网站有哪些百度知道个人中心
  • 做电商网站前端需要什么框架有做网站的吗
  • 提供网站建设课程报告线上营销策略
  • 做网站怎么做小图标比百度好用的搜索软件手机版
  • 综合网站建设开一个网站需要多少钱
  • 东道设计公司官网招聘seo监控
  • 深圳网站建设快速排名上海优化网站
  • 做个手机app需要多少钱seo流量排名软件
  • 龙采网站建设百度搜索大数据查询
  • 模板做网站影响seo白酒营销策划方案
  • 网上做推广怎么收费优化资讯
  • 响应式网站设计多少钱唐山百度搜索排名优化
  • 制作网站找云优化线上电商怎么做
  • jsp做的零食网站下载西安关键字优化哪家好
  • 网站怎么做本地映射网络营销的培训课程
  • ks刷粉网站推广马上刷韩国网站
  • 做村易通网站站长要收费吗网络营销 长沙
  • 朝阳网站建设 国展十大永久免费的软件下载