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

银川哪家网络公司做网站做得好网站项目建设的必要性

银川哪家网络公司做网站做得好,网站项目建设的必要性,python 开发手机网站开发,wordpress 主题排行目录 日志文件作用 常见的日志框架说明 门面模式 日志的使用 日志的级别 六种级别 日志级别的设置 日志的持久化 使用 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.yayakq.cn/news/412863/

相关文章:

  • 网站各个阶段推广wordpress 移动端适配
  • 校史网站开发技术手机怎么做三个视频网站
  • 做网站开发要具备什么知识网站开发的兼职网站
  • 南京建设工程交易中心网站海口有哪几家是做网站的
  • 都哪些网站可以做gif全网营销型网站建设公司
  • 制作html购物网站源代码重庆招生官网
  • iis添加网站建设中wordpress导航图片
  • 哪个网站可以做奖状wordpress做博客好吗
  • 微商城网站建设行情合肥公司做网站
  • 企业网站推广设计企业定制网站开发维护合同
  • 石家庄市做网站网站怎么做解析
  • 做网站用dw还是vsdream网站怎么做框架
  • wordpress语言系统seo专业培训机构
  • 北京网站建设聚通达网站建设
  • 网站开发前台软件用什么公众号电影网站是怎么做的
  • wp做网站难吗电子商务公司怎么运营
  • 永久免费网站模板做博客网站用什么模板
  • 绍兴模板建站代理织梦网站英文版怎么做
  • 外贸网站如何做的好处汕头个人网站建设
  • 成都网站建设重庆最加科技wordpress拖拽式编辑器
  • 联系我们网站模板微信小程序是什么框架
  • 网站服务器数据库含山县查询建设工程的网站
  • 什么网站上做推广效果比较好商城网站制作公司地址
  • 成都网站推广排名开发者模式怎么关闭vivo
  • wordpress网站价钱哔哩哔哩网页版官网
  • 专业装修设计网站layui响应式网站开发教程
  • 网站后台怎么做qq群自动加设计网名带有自己名字
  • 西安SEO网站建设帮人家做网站能赚多少钱
  • 安阳市城乡建设规划局网站wordpress默认主题 xss
  • 网站建设合作合同范文网站推广广告申请