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

动地科技登录网站深圳专业建站公司

动地科技登录网站,深圳专业建站公司,app推广文案,三亚网站制作目录 日志文件作用 常见的日志框架说明 门面模式 日志的使用 日志的级别 六种级别 日志级别的设置 日志的持久化 使用 Lombok 输出日志 实现原理 普通打印和日志的区别 日志文件作用 记录 错误日志 和 警告日志(发现和定位问题)记录 用户登录…

目录

日志文件作用

常见的日志框架说明 

门面模式

日志的使用

日志的级别

六种级别

日志级别的设置

日志的持久化

使用 Lombok 输出日志

实现原理

普通打印和日志的区别


日志文件作用

  • 记录 错误日志 和 警告日志(发现和定位问题)
  • 记录 用户登录日志,分析用户是否正常登录
  • 记录 系统操作日志,方便 数据恢复 和 定位操作人
  • 记录程序执行时间,方便以后为优化程序提供数序支持

常见的日志框架说明 

门面模式

  • 设计模式的一种
  • 门面模式就是一种通过引入一个简化接口来隐藏复杂细系统的设计模式,它提供了一种简单的方式让客户端与系统进行交互,同时降低了客户端和系统之间的耦合度

简单理解

  • 日志系统有多个,即多个不同的框架,框架的本质是多个工具类的集合
  • 不同的框架有着不同的类名,不同的类名也有着不同的方法名
  • 所以 Log4j、JUL、Logback、Slf4j-Simple 这些日志系统的写法完全一点边都不沾

导致问题

  • 如果此时直接在应用程序中以 Log4j 日志系统为基本进行日志操作
  • 有一天 Log4j 日志系统 出现了严重 bug,需要将该应用程序的 日志系统 改为 Logback 时
  • 因为这两个日志系统的写法完全一点边不沾,所以此时应用程序中需要修改代码就会很多很多

解决方法

  • 引入日志门面
  • 我们按照 日志门面 所提供的写法来写日志操作代码
  • 然后 日志门面 会根据程序员的配置 和 程序员引入的驱动 来操作最底层的日志系统
  • 通过该方式便可轻松切换日志系统
  • 从而很大程度上降低了应用程序和日志系统的耦合度

  • Spring Boot 内置的日志门面是 Slf4j 、日志系统是 Logback

日志的使用

得到日志对象

  • 在 TestController 类中使用日志工厂 LoggerFactory 获取日志对象
  • 日志在程序运行期间只加载一次,并且不可变,所以使用 static 和 final 修饰
//    1.得到日志对象private static final Logger log = LoggerFactory.getLogger(TestController.class);

注意:

  • Logger 有很多一定要选择导入下图红框的包


使用日志对象提供的方法打印日志

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
@ResponseBody // 加在类上,表示当前类中的所有方法返回的都是非静态页面的数据
@RequestMapping("/test") // = @WebServlet("/url")
public class TestController {
//    1.得到日志对象private static final Logger log = LoggerFactory.getLogger(TestController.class);@RequestMapping("/say-hi") // = @WebServlet("/url")public String sayHi() {
//        2.打印日志log.trace("i am trace");log.debug("i am debug");log.info("i am info");log.warn("i am warn");log.error("i am error");return "hello world ";}
}

运行结果:

  • 先在浏览器中访问下图路径

  • 再观察控制台输出的日志信息

  • 我们自定义打印的日志信息有五条
  • 在上图运行结果中,控制台却仅打印了后三条日志信息
  • 因为此时 Spring Boot 默认打印的日志级别为 info 级别
  • 即 大于或等于 info 级别的日志信息才会打印出来

日志的级别


六种级别

trace

  • 微量,少许的意思级别最低

debug

  • 需要调试的时候的关键信息打印

info

  • 普通的打印信息,默认日志级别

warn

  • 警告,不影响使用,但需要注意的问题

error

  • 错误信息,级别较高的错误日志信息

fatal

  • 致命的,因为代码异常导致程序退出执行的事件

日志级别的设置

  • 日志输出的默认级别是 info
  • 我们可以在配置文件中手动配置默认日志输出级别
  • 在配置文件 application.yml 中,加入下段配置代码即可
logging:level:root: warn
  • 上述配置代码的作用域为根目录(root)下的所有包
  • 表示设置根日志记录器的级别为 warn
  • 这意味着,应用程序中所有的日志记录器都将继承这个级别
  • 除非它们已经被明确地设置了其他级别

运行结果:

  • 如果我们想设置指定某一包下的日志输出级别
  • 可按下图方式添加配置代码

  • 红框路径以 java 目录为起始目录

运行结果:

  • 明确指定某一包下的日志输出级别的优先级高于 使用 root 指定根目录下所有包的日志输出级别

日志的持久化

  • 上述日志的仅在控制台输出
  • 在生产环境中我们需要将日志保存下来
  • 以便出现问题后可以追溯问题

两种方式

指定日志的存储目录

  • 启动 Spring Boot 后
  • 在 E盘的 test 目录下的 testDemo 目录下会出现日志文件
  • 如果启动前无该路径,启动后便会自动创建出该路径
logging:file:path: E://test//testDemo

指定日志文件的文件名

  • 启动 Spring Boot 后
  • 会在指定目录下生产一个名为 spring-log.log 的日志文件
logging:file:path: E://test//testDemo//spring-log.log

注意点一:

  • 在Spring Boot 中进行日志记录时
  • 如果没有指定日志文件的名称 或 两次保存的日志指定了相同的文件名
  • 那么第二次运行Spring Boot 时,其保存的日志信息会被追加到第一次保存的日志文件后面,而不是覆盖第一次保存的日志信息
  • 因为 Spring Boot 的日志系统默认是以 追加模式 来写入日志的
  • 也就是说每次写入日志时,都会在原有日志的基础上添加新的日志信息,而不会删除或覆盖原有的日志

注意点二:

  • 日志文件的大小通常会有一个上限
  • 这是为了防止日志文件过大导致加载速度变慢
  • 当日志文件达到一定大小后,Spring Boot 会自动创建一个新的日志文件
  • 以防止单个日志文件过大
  • 通过下段配置代码,可以实现手动配置日志文件的大小上线
logging:file:path: E://test//testDemo//spring-log.logmax-size: 10MB
  • 该段配置代码将日志文件的大小上限设置为 10MB

使用 Lombok 输出日志

实例理解

  • 我们在 EasyController 类上加 @Slfj 注解
  • 即可直接在该类中使用 log 对象
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
@ResponseBody
@Slf4j
public class EasyController {@RequestMapping("/test/easy")public void sayHi() {log.error("i am error");}
}

实现原理

  • Java 程序在 IDEA 中执行完后会生产一个 target 文件
  • 该文件为源代码完成去掉注释等一系列工作后的文件
  • 且该文件就是该项目执行的最终代码

  • 我们发现 lombok的事件原理就是在编译阶段加上了我们原本需要的代码

普通打印和日志的区别

最关键的两个区别

  • 普通打印 没有级别的控制,无法进行信息的筛选
  • 普通打印  不支持持久化,无法保存下来
http://www.hkea.cn/news/805287/

相关文章:

  • 雄安网站建设制作网站关键词如何快速上首页
  • 佛山从事网站建设百度小程序入口官网
  • 自建网站平台可以实现哪些功能网络营销这个专业怎么样
  • 佛山新网站制作公司网页制作成品模板网站
  • 校园网站建设的意见企业管理培训课程网课
  • 郑大远程教育动态网站建设seo优化关键词排名
  • 做logo什么网站昆明百度关键词优化
  • 怎样做省钱购物网站sem推广代运营
  • 英文网站开发公司万网阿里云域名查询
  • 做调查问卷网挣钱的网站新闻 今天
  • 网站建设工作小组在线建站平台免费建网站
  • 可以发广告的网站湖南seo推广系统
  • 大丰网站建设哪家好成都seo
  • 学校网站建设项目的wbsseo交流qq群
  • 筑梦网站建设西安百度竞价开户
  • 个体营业执照可以做网站搞推广吗推广网站制作
  • 公共交通公司网站建设方案移动慧生活app下载
  • 国内开源代码网站搜了网推广效果怎么样
  • html5 metro风格网站模板今日新闻事件
  • 网站不在首页显示出来做网络推广
  • 上海网站seo公司网页推广平台
  • 网站服务器租用价格表百度怎么发布自己的广告
  • 经纪人做网站技巧搜索引擎入口yandex
  • 教育网站制作哪家服务好全球外贸采购网
  • 响应式网络网站源码百度关键词查询网站
  • 南京网站制作设计公司网络运营团队
  • 阿里巴巴上怎样做自己的网站seo网站优化网站编辑招聘
  • 网站做付费推广都需要问什么网络热词2022
  • 给男票做网站表白的软件产品市场推广计划书
  • 西安网站制作定制怎么制作自己的个人网站