【Springboot】日志

news2024/9/25 21:24:46

1.日志的使用

日志主要用于记录程序运行的情况。我们从学习javase的时候就使用System.out.println();打印日志了,通过打印的日志来发现和定位问题,或根据日志来分析程序运行的过程。在Spring的学习中,也经常根据控制台的⽇志来分析和定位问题 。

日志除了发现和定位问题,还可以进行系统监控,数据采集和日志审计。

系统监控:统计⽇志中关键字的数量,并在关键字数量达到⼀定条件时报警,这也是⽇志的常⻅需求之⼀

数据采集:统计⻚⾯的浏览量(PV),访客量(UV),点击量等,根据这些数据进⾏数据分析,优化公司运营策略

日志审计:一条记录的删除或修改 ,通过日志记录是谁操作的,如果出现内部的违规和信息泄露现象后,为时候追查提供依据。⼀些公司查看客⼾的信息都会被记录⽇志,如果频繁查询也会报警

1.1.打印日志

@RestController
public class LoggerController {
    //1.定义日志对象
    private Logger logger = LoggerFactory.getLogger(LoggerController.class);
    @PostConstruct
    public void print(){
        System.out.println("打印日志");
        logger.info("=====我是使用日志框架打印日志=====");
    }
}

打印结果:

image-20240121184517037

使⽤⽇志对象打印⽇志的结果显示的信息比System.out.println();要全。日志对象打印的日志包括:时间,级别,进程ID,线程,打印日志的类,日志内容。

日志对象的名称,通常情况下,是当前类,可能为缩写。

1.2 日志框架的介绍

日志框架使用的SLF4J 。SLF4J 并不是一个真实的日志实现,而是日志的门面。不能独立使用,需要搭配具体的实现日志比如:log4j/2,或者logback。

SLF4J 是外观模式(门面模式)的典型应用,注意SLF4J 并不是只有外观模式。

门面模式(FacadePattern)又称为外观模式,提供了一个统一的接口,用来访问子系统的一群接口。其主要特征是定义了⼀个高层接口,让子系统更容易使用.

门面模式的优点:

  1. 实现了客户端和子系统间的耦合关系,使子系统的变化不会影响到调用他的客户端。
  2. 提高了灵活性,简化了客户端对子系统的使用难度,客户端无需关心子系统的具体实现,只需要和门面对象交互即可。
  3. 提⾼了安全性.可以灵活设定访问权限,不在⻔⾯对象中开通⽅法,就⽆法访问

1.3 日志的级别

⽇志的级别从⾼到低依次为:FATAL、ERROR、WARN、INFO、DEBUG、TRACE
• FATAL:致命信息,表⽰需要⽴即被处理的系统级错误.
• ERROR:错误信息,级别较⾼的错误⽇志信息,但仍然不影响系统的继续运⾏.
• WARN:警告信息,不影响使⽤,但需要注意的问题
• INFO:普通信息,⽤于记录应⽤程序正常运⾏时的⼀些信息,例如系统启动完成、请求处理完成等.
• DEBUG:调试信息,需要调试时候的关键信息打印.
• TRACE:追踪信息,⽐DEBUG更细粒度的信息事件(除⾮有特殊⽤意,否则请使⽤DEBUG级别替代)

日志级别的使用:

@Slf4j
@RestController
public class LoggerController {
    //1.定义日志对象
    private Logger logger = LoggerFactory.getLogger(LoggerController.class);
    @PostConstruct
    public void print(){
        logger.info("=====我是使用日志框架打印日志=====");
        logger.error("我是error日志");
        logger.warn("我是warn日志");
        logger.info("我是info日志");
        logger.debug("我是debug日志");
        logger.trace("我是trace日志");
    }
}

输出结果:

image-20240121204512479

因为spring默认的日志级别是info.只能输出比info高的日志信息。所以我们上面的输出结果中debug和trace没有输出。

要想输出日志级别比info低的需要进行日志配置

1.4日志配置

其他配置可以查看:常见的 Application Properties (springdoc.cn)

配置日志级别为debug:

logging:
  level:
    root: info # 全局目录的级别
    com:
      bite:
        demo: debug # 指定目录日志的级别

日志的持久化(就是把日志保存在文件中):

logging:
  file:
    name: logger/ioc.log

日志分割:

logging:
  logback:
    rollingpolicy:
      max-file-size: 1KB # 分割日志文件的大小
      file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i # 日志文件分割的名称定义规则

配置日志格式:

logging:
    console: '%d{HH:mm:ss.SSS} %c %M %L [%thread] %m%n' # 控制台格式
    file: '%d{HH:mm:ss.SSS} %c %M %L [%thread] %m%n' # 文件格式	

2. 简单的日志输出

先添加lombok依赖。然后在类上添加@Slf4j注解

@Slf4j
@RestController
public class LoggerController {
    @PostConstruct
    public void print(){
        log.info("=====我是使用日志框架打印日志=====");
        log.error("我是error日志");
        log.warn("我是warn日志");
        log.info("我是info日志");
        log.debug("我是debug日志");
        log.trace("我是trace日志");
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1403549.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《WebKit 技术内幕》学习之七(1): 渲染基础

《WebKit 技术内幕》之七(1): 渲染基础 WebKit的布局计算使用 RenderObject 树并保存计算结果到 RenderObject 树。 RenderObject 树同其他树(如 RenderLayer 树等),构成了 WebKit 渲染的为要基础设施。 1…

w23靶场安装

一、实验环境 服务器:phpstudyv8.1.13 靶场:Bees二、实验目的 提供一个靶场环境 三、实验步骤 bees靶场安装 1.启动小皮的apache和mysql 2.在小皮V8.1.1.3版本上创建bees网站,选择的php版本最好在5.x,不然会有php解析错误。…

Windows系统如何修改Nginx配置实现远程访问多个本地站点

文章目录 1. 下载windows版Nginx2. 配置Nginx3. 测试局域网访问4. cpolar内网穿透5. 测试公网访问6. 配置固定二级子域名7. 测试访问公网固定二级子域名 1. 下载windows版Nginx 进入官方网站(http://nginx.org/en/download.html)下载windows版的nginx 下载好后解压进入nginx目…

samba服务搭建,并将共享目录映射到windows

系统版本:centos7 1、centos 安装samba yum -y install samba 2、查看安装信息 rpm -qa |grep samba 3、设置开机自启动 systemctl enable smb.service systemctl enable nmb.service 4、设置samba服务器配置文件 sudo vi /etc/samba/smb.conf 注意&#…

mysql进阶-执行计划

目录 1. 概念 2. 使用 3. 具体相关字段含义 3.1 id 3.2 select_type 3.3 table 3.4 partition 3.5 type 3.6 possible_key 3.7 key 3.8 key_len 3.9 ref 3.10 row 3.11 filtered 3.12 extra 1. 概念 一条语句通过优化器之后,会生成具体的执行计划用…

qt-c++多窗口编程

1、QMessageBox 消息对话框 QMessageBox继承自QDialog,显示一个模态对话框。用于用户前台信息通知或询问用户问题,并且接收问题答案。 QDialog再Qt源码中,派生类往往都是一些在特定场合下使用的预设好的对话框窗口。这些窗口无需创建对象&…

PaddleDetection学习3——使用Paddle-Lite在 Android 上部署PicoDet模型(fp16)

使用Paddle-Lite在 Android 上运行PicoDet模型(fp16) 1. 环境准备2. 部署步骤2.1 下载Paddle-Lite-Demo2.2 打开 picodet_detection_demo项目2.2.1 修改build.gradle,配置国内镜像仓库2.2.2 NDK 配置错误问题2.2.3 gradle.properties文件配置…

PaddleOCR实现对表格的提取

1、背景 PaddleOCR: 基于飞桨的OCR工具库,包含总模型仅8.6M的超轻量级中文OCR,单模型支持中英文数字组合识别、竖排文本识别、长文本识别。同时支持多种文本检测、文本识别的训练算法。对pdf/word里的表格中识别出有效信息具有重要意义,比如…

OpenSource - 文件在线预览模块(多格式转 PDF 文件)

文章目录 文件在线预览模块(多格式转PDF文件)现已支持格式如下界面展示运行方式接口介绍文件上传文件转 PDF文件转图片文件转SVG 参数配置其他说明项目关联关键词文档转换预览技术说明同步转换异步转换 主要技术乱码问题处理帮助文档 前端预览弹出层用法…

uniapp开发小程序如何获取用户地理位置

1、需求说明 需求&#xff1a;点击按钮获取当前微信位置&#xff0c;以及点击拒绝授权后&#xff0c;下次点击还可以拉起授权窗口&#xff1b; 2、言归正传 1、编写代码 模板部分 <template><view><button type"" click"getLocation"&…

hugo的常规使用操作

hugo的常规使用操作&#xff08;不断完善中&#xff09; 找到theme主题中config.toml 一般都会通过theme中复制到自己项目的config.toml中做修改和补充&#xff0c;来完善不同的业务需求 Hugo静态资源载入逻辑 原理 将图片信息放到static中&#xff0c;但是在文章中写的时…

入门教程:使用 Postman 发送 post 请求

Postman 是一个实用的开发工具&#xff0c;它让发送各类 POST 请求成为了可能&#xff0c;包括文本、JSON、XML 以及文件等。开发者利用此工具不仅能够检验API的功能性&#xff0c;还能仿真客户端的请求行为&#xff0c;进而深入了解客户端如何与 API 进行互动。 HTTP 协议中的…

v38.条件结构

1.if-else 2.嵌套if结构 第二个if是嵌套在第一个if里面的&#xff0c;不能独立实现程序。存在依赖关系。 3.else if 不存在依赖关系。 4. printf函数是属于if/else 语句的&#xff0c;加不加大括号&#xff5b;&#xff5d;效果是一样的 5. 也就是说if的管辖范围只能是条件后…

服务器感染了.wis[[Rast@airmail.cc]].wis勒索病毒,如何确保数据文件完整恢复?

导言&#xff1a; 在当今数字化的时代&#xff0c;恶意软件攻击已经变得越来越复杂和狡猾&#xff0c;[[MyFilewaifu.club]].wis [[backupwaifu.club]].wis[[Rastairmail.cc]].wis勒索病毒是其中的一种新威胁。本文91数据恢复将深入介绍[[MyFilewaifu.club]].wis [[backupwaif…

大数据开发之Spark(入门)

第 1 章&#xff1a;Spark概述 1.1 什么是spark 回顾&#xff1a;hadoop主要解决&#xff0c;海量数据的存储和海量数据的分析计算。 spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。 1.2 hadoop与spark历史 hadoop的yarn框架比spark框架诞生的晚&#xff…

常见的嵌入式面试问题解答!

1.关键字static的作用是什么&#xff1f;为什么static变量只初始化一次&#xff1f; ​1&#xff09;修饰局部变量&#xff1a;使得变量变成静态变量&#xff0c;存储在静态区&#xff0c;存储在静态区的数据周期和程序相同&#xff0c; 在main函数开始前初始化&#xff0c;在…

【论文代码】基于隐蔽带宽的汽车控制网路鲁棒认证-到达时间间隔通道的Java实现(一)

文章目录 一、USBtin 基类1.1 CANSender 类1.1.1 SimpleSender类 1.2 CANReceiver类1.2.1 SimpleReceiver类 1.3 Noise_node类 二、CANMessageListener 接口2.1 IAT_Monitor2.2 BasicListener2.3 DLC_Monitor 三、IATBitConverter 抽象类3.1 OneBitConverter类3.2 TwoBitConver…

swagger-ui配置错误原因

第一个问题 就是出现了error white page&#xff0c;主要是因为运行类的pom文件里没有添加到common类的地址dependency&#xff0c;导致出现问题&#xff0c;还到处排查 第二个问题 进去就跳出登录页面&#xff0c;可是我没有账户名和密码啊 在弄pom文件的时候不知道什么时候…

【idea】解决IDEA:The file size exceeds configured limit (5.12MB).

报错原因 The file size (5.13MB) exceeds configured limit (5.12MB). Code insight features are not available.(文件大小超出了设定值&#xff0c;IDEA不再对这个文件的进行代码解析了) 与之而来的结果是&#xff1a;IDEA中其他文件对于这个文件的所有引用都会报错&#x…

洛谷 P1126 机器人搬重物

题目描述 机器人移动学会&#xff08;RMI&#xff09;现在正尝试用机器人搬运物品。机器人的形状是一个直径 1.6 米的球。在试验阶段&#xff0c;机器人被用于在一个储藏室中搬运货物。储藏室是一个 NM 的网格&#xff0c;有些格子为不可移动的障碍。机器人的中心总是在格点上…