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

企业网站建设的类型主要有网络服务有点问题别紧张试试看刷新页面

企业网站建设的类型主要有,网络服务有点问题别紧张试试看刷新页面,一键设计logo,企业宣传册模板文案Spring Boot 日志文件 学习目标一 . 日志有什么用1.1 日志格式说明 二 . 自定义日志打印2.1 得到日志对象2.2 使用日志对象提供的方法 , 输出自定义的日志内容2.3 日志的级别 三 . 日志持久化3.1 在配置文件里面设置日志名称3.2 设置日志的保存目录 四 . 日志级别的设置五 . 简… Spring Boot 日志文件 学习目标一 . 日志有什么用1.1 日志格式说明 二 . 自定义日志打印2.1 得到日志对象2.2 使用日志对象提供的方法 , 输出自定义的日志内容2.3 日志的级别 三 . 日志持久化3.1 在配置文件里面设置日志名称3.2 设置日志的保存目录 四 . 日志级别的设置五 . 简化日志的小技巧 - lombok5.1 lombok 的使用5.2 lombok 的原理5.3 lombok 更多注解说明 总结 这个专栏给大家介绍一下 Java 家族的核心产品 - SSM 框架 JavaEE 进阶专栏 Java 语言能走到现在 , 仍然屹立不衰的原因 , 有一部分就是因为 SSM 框架的存在 接下来 , 博主会带大家了解一下 Spring、Spring Boot、Spring MVC、MyBatis 相关知识点 并且带领大家进行环境的配置 , 让大家真正用好框架、学懂框架 来上一篇文章复习一下吧 点击即可跳转到我的小秘密 学习目标 输出自定义日志信息将日志持久化通过设置日志的级别来筛选和控制日志的内容 一 . 日志有什么用 日志只有一个作用 : 发现问题 定位问题 我们之前已经使用了很多次的日志 除了发现和定位问题之外我们还可以通过日志实现以下功能 记录用户登录日志方便分析用户是正常登录还是恶意破解用户。记录系统的操作 , 方便数据恢复和定位操作。记录程序的执行时间 , 方便为以后优化程序提供数据支持。 1.1 日志格式说明 日志打印级别 : 用来筛选有效信息 在日常调试和开发过程中 , 我们需要看的日志通常会比较多 , 在生产环境的时候 , 我们并不需要看调试日志以及开发日志 , 我们就可以把他屏蔽掉 , 也可以把 Spring Boot 展示给我们的日志(INFO) 也关闭掉 , 只展示报错以及警告信息 , 那么我们就可以通过日志的级别来进行筛选关键信息 . 而且打印日志也是会消耗一定资源的 , 所以在线上环境就尽量别弄出什么幺蛾子了 . 通过目前我们了解到的日志 , 我们发现三个问题 : 这是 Spring Boot 默认的日志格式 , 目前我们打印出的都是系统自己的日志 , 那么我们怎么样能让控制台打印我们自己的日志 ?我们的日志是保存在我们的内存上的 , 那么假如我们的线上环境出现了问题 , 我们也不能说让人一直去看着 , 出现问题赶紧把开发人员叫过来查看日志 , 所以日志的持久化保存也是非常有必要的我们需要通过日志的级别来筛选我们需要的信息 二 . 自定义日志打印 自定义日止的实现步骤 : 在程序中得到日志对象使用日志对象的相关语法输出要打印的内容 我们思考一个问题 : 使用 sout 语句能否替代日志呢 ? TestController.java package com.example.demo.aa.bb;import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;// 这个注解什么意思先不用管 RestController public class TestController {// 这个注解什么意思先不用管RequestMapping(/sayhi)public String sayHi() {System.out.println(这里正在测试日志);return 日志;} }我们这不也打印出相关信息了吗 ? 但是感觉跟正常的日志差得有点多 , 感觉不太靠谱 只有打印的内容 , 没有其他的相关信息 , 比如打印的时间、打印的类(出处)不能实现不同环境下的行为控制 比如我们的日志能够通过日志级别筛选 , 让线上环境或者开发环境展示出不同的信息 , 而 sout 语句不行 , 他会在哪里都打印的 所以使用 sout 语句是不能替代日志的 , 还是需要专业的人干专业的事的 2.1 得到日志对象 导入 Logger 对象 注意 : 一定要选择 org.slf4j (飒楼否四节) 然后使用 Logger 的 LoggerFactory 里面的 getLogger 方法, 参数填写当前类.class 2.2 使用日志对象提供的方法 , 输出自定义的日志内容 使用 log. 的方式 , 接下来我们就可以打印日志了 package com.example.demo.aa.bb;import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController public class TestController {// 1. 得到日志对象private static Logger log LoggerFactory.getLogger(TestController.class);RequestMapping(/sayhi)public String sayHi() {// 2. 打印日志log.info(Hi,Spring Boot Log.);//使用日志对象的方法输出日志return 日志;} }那么我们上面告诉大家一定要用 slf4j , 那么 slf4j 是个什么东西 ? 我们的 slf4j 与 Spring Boot 是密切相关的 , slf4j 也是目前行业中的日志标杆了 , 他的日志以我们目前对于 Spring Boot 的理解来说 , 还算是比较复杂的 . 但看似很简单的日志 , 其实是由两部分实现的 我们可以这样理解 : 日志门面就是前端 , 日志实现就是后端 为什么一个简简单单的日志还要分解为日志门面还有日志实现呢 ? 最刚开始 , 其实日志是不分类的 , 后来发现了一个问题 : 我们的代码通用性问题 , 假如我们最开始用 log4j 1/2 , 但是后来他就出现漏洞了 , 所以大家又转战到了 logback , 但是使用 logback 就出现了问题 : 我们之前所有调用日志代码的地方就需要去更改 , 这样日志就没有通用性了 , 所以我们就再抽象一层 , 我们是从 slf4j 使用的 , slf4j 会自己帮我们解决好适配性问题 , 提高代码的移植性 其实和我们 JDBC 的问题是一样的 , 大家都是为了能够提高代码的通用性 2.3 日志的级别 我们不光可以打印普通日志 , 还可以打印其他等级的日志 package com.example.demo.aa.bb;import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController public class TestController {// 1. 得到日志对象private static Logger log LoggerFactory.getLogger(TestController.class);RequestMapping(/sayhi)public String sayHi() {// 2. 打印日志// 级别从上到下逐个提升的log.trace(Hi,I am trace.);//痕迹日志log.debug(Hi,I am debug.);//调试日志log.info(Hi,I am info.);//普通日志log.warn(Hi,I am warn.);//警告日志log.error(Hi,I am error);//报错return 日志;} }那为什么剩下两个没被打印呢 ? 这是因为默认情况下日志级别是 info , 所以就把 trace debug 筛选下去了 那么我们都有哪些级别的日志呢 ? trace微量少许的意思级别最低debug需要调试时候的关键信息打印info普通的打印信息warn警告不影响使用但需要注意的问题error错误信息级别较高的错误日志信息fatal致命的因为代码异常导致程序退出执行的事件。 那么我们上面只打印出来五种啊 , 咋没打印第六种 . 可以看到 , 我们是调用不出来 fatal 的 . 这种致命的错误不是你说调就调出来的 , 当发生异常情况导致终止的时候才能看到 fatal , 甚至说严重点 , 还没有多少人见过他的芳容 . 三 . 日志持久化 3.1 在配置文件里面设置日志名称 我们在 application.yml 里面添加这句配置项 # 设置日志文件的文件名 logging:file:name: springboot.log接下来运行查看一下效果 还可以这样去看 如果有的同学没看见日志在哪里 , 可以把 target 文件夹删除 , 重新运行再来看 接下来 , 我们就可以把项目停掉 , 来看一下咱们的日志 那么我们重新运行 , 新的日志是追加在后面还是覆盖掉 ? 肯定是追加在后面 , 不然还是有日志丢失的风险 . 重新运行后的日志就变多了 那么日志一直追加 , 越来越大 , 打开的速度就会变得非常慢 , 寻找日志就比较麻烦 , 那怎么办呢 ? 当日志比较大的时候 , 会自动分割成多个文件 , 所以不用去担心 3.2 设置日志的保存目录 # 设置日志文件的目录 logging:file:path: D:\study\JavaCode我们打开这个目录看一下是否真的生成了 ? 那么我们把程序停止 , 看看日志里面有什么 ? 那么这种方式能不能追加日志呢 ? 也是可以追加的 四 . 日志级别的设置 日志级别的设置非常的精细化 , 可以针对于某个目录设置日志级别 , 还可以设置一个全局的日志级别 日志级别配置只需要在配置文件中设置 “logging level” 配置项即可 logging:level:root: debug注意 : 我们之前写过 logging , 要是再写一个 logging 的话就会报错 所以我们可以在一个 logging 标签底下写多个配置项 logging:file:path: D:\study\JavaCodelevel:root: warn # 根路径那么有的人只想看到自己的 DEBUG 日志 , 不想看到 Spring 的 DEBUG 日志 , 因为 Spring 的 DEBUG 日志实在是太多了 , 那么我们就可以把系统日志设置的级别高一些 , 可以让 Spring 的日志级别设置成 warn , 我们自己的代码的日志级别设置成 debug logging:file:path: D:\study\JavaCodelevel:root: warn # 根路径com:example:demo: debug # com.example.demo 下面的所有类,日志级别都是 debug那么我们想要自己的日志级别为 trace , 系统日志为 warn 怎么处理呢 , 同样很简单 logging:file:path: D:\study\JavaCodelevel:root: warn # 根路径com:example:demo: trace接下来 , 我们模拟一下真实的开发环境 上节课我们学过多平台的配置文件设置 , 那么我们就可以根据不同的环境打印出不同等级的日志了 首先 , 我们创建出三个不同的环境的配置文件 开发环境的配置文件 : application-dev.yml 测试环境的配置文件 : application-test.yml 生产环境的配置文件 : application-prod.yml然后我们分别在每个配置文件中设置不一样的端口 , 方便我们后续测试效果 然后接下来设置每个环境的日志等级 开发环境设置成系统日志为 warn , 自己的日志为 debug 测试环境设置成系统日志为 warn , 自己的日志为 info 生产环境设置成系统日志为 warn , 自己的日志为 warn 接下来在我们总的配置文件中调用每个单独的配置文件 # 运行环境设置 spring:profiles:active: dev记得这里要去浏览器访问 127.0.0.1:8888/sayhi, 因为我们的开发环境配置文件端口号是 8888 这次访问 127.0.0.1:9999/sayhi # 运行环境设置 spring:profiles:active: test这次访问 127.0.0.1:11111/sayhi # 运行环境设置 spring:profiles:active: prod五 . 简化日志的小技巧 - lombok 我们在 com.example.demo 包底下新建一个 StudentController 类 然后编写代码 package com.example.demo;import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;RestController public class StudentController {// 1. 得到日志对象private static Logger logger LoggerFactory.getLogger(StudentController.class);RequestMapping(/hi)public String sayHi() {// 2. 使用日志对象提供的方法进行日志打印logger.trace(Hi,I am trace.);logger.debug(Hi,I am debug.);return Hi,Spring Boot.;} } 但是每次这样写 , 我们还觉得怪麻烦的 那我们的 Spring Boot 还是可以解决这个问题的 这就需要我们使用额外的库 - lombok 我们之前不想写 Getter Setter 方法 , 只要在上面加上 Getter Setter 注解 , 甚至直接加一个 Data 注解即可 等到日志这里 , 我们发现唯一不同的 ,就是图片里圈出来那部分 , lombok 发现了 , 只有类型不同 , 那么我们只需要拿到当前类的类型呗 , 那我就通过一个注解帮你完成 , 注解内部就是我们图片里的这句代码 , lombok 自动帮我们获取类型了 那怎么使用 lombok 来更简单的输出呢 ? 5.1 lombok 的使用 添加 lombok 框架支持。使用 slf4j 注解输出日志。 package com.example.demo;import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;// 1. 引入 lombok 依赖 Slf4j RestController public class StudentController {RequestMapping(/hi)public String sayHi() {// 2. 使用日志对象提供的方法进行日志打印log.debug(Hi,I am debug.);return Hi,Spring Boot.;} } 有的同学可能调用不出来 lombok , 比如这样 只需要添加 lombok 的依赖即可 右键 - Generate 选择 Dependency 搜索 lombok , 选择第二个 这样 lombok 依赖就自己添加进去了 前提是 IDEA 版本是 2021.3.2 , 其他版本我们也可以选择装一个插件 : EditStarters 实现依赖引入 这个页面似曾相识 这样依赖就添加进去了 , 记得手动刷新一下 5.2 lombok 的原理 实际上 , 原理就是这样 lombok 在编译期间就开始干活了 , 这样对于 JVM 来说是感知不到的 , 他就知道我们传过来的代码里面已经有日志对象了 5.3 lombok 更多注解说明 基本注解 : 注解作用Getter自动添加 getter 方法Setter自动添加 setter 方法ToString自动添加 toString 方法EqualsAndHashCode自动添加 equals 和 hashCode 方法NoArgsConstructor自动添加 无参构造 方法AllArgsConstructor自动添加 全属性的构造方法 方法 , 顺序按照属性的定义顺序NonNull属性设置成不能为 nullRequiredArgsConstructor⾃动添加必需属性的构造方法 , final NonNull 的属性为必需 组合注解 : 注解作用DataGetter Setter ToString EqualsAndHashCode RequiredArgsConstructor NoArgsConstructor 日志注解 : 注解作用Slf4j添加⼀个名为 log 的日志使用 slf4j 总结 日志是程序中的重要组成部分试用日志可以快速的发现和定位问题Spring Boot 提供了日志框架 , 默认情况下使用的是 info 日志级别将日志输出到控制台的我们可以通过 lombok 提供的 Slf4j 注解和 log 对象快速的打印自定义日志⽇日志包含 6 个级别 trace微量少许的意思级别最低info普通的打印信息debug需要调试时候的关键信息打印warn警告不影响使用但需要注意的问题error错误信息级别较高的错误日志信息fatal致命的因为代码异常导致程序退出执行的事件。 日志级别依次提升 , 而日志级别越高收到的日志信息也就越少我们可以通过配置日志的保存名称或保存目录来将日志永久地保存下来。 至此 , Spring Boot 的日志文件就分享完毕 , 给个三连来救救小猫
http://www.pierceye.com/news/597095/

相关文章:

  • 寿阳网站建设开发网站的硬件成本
  • 做网站的叫什么软件众筹网站开发
  • 鲜花网网站开发的目标河南郑州建设网站
  • 做网站上哪买空间帝国网站管理系统安装连接不上数据库
  • 做前端网站用什么工具网站备案后怎么做实名认证
  • 做兼职那个网站比较好重庆的seo服务公司
  • 网站建设流费用南通seo排名公司
  • 河北邢台移动网站建设单片机做网站
  • 佛山网站制作的公司做文库网站怎么赚钱吗
  • 博客网站 做淘宝客咸阳网站建设推广
  • 佛山手机网站建设优化做网站要多大的画布
  • 网站结构优化包括什么网站建设定制开发
  • 做装修的有那些网站wordpress获取用户位置
  • 找事做网站公司网站网页设计
  • 网站数据哪个网站可以做图片
  • 网站添加google地图阿里云服务器可以访问国外网站吗
  • 大连免费网站制作重庆哪些网站推广公司
  • 查建设工程规划许可证网站广州模板建站公司
  • 怎么做网站的超级链接有哪些做的很漂亮的网站
  • 做旅游网站挣钱吗wordpress 虎嗅网
  • 乐清网站制作的公司php 网站源代码
  • 外国知名个人网站衡阳做网站公司
  • 女人网站源码沈阳大型网站制作公司
  • 河南外贸网站建设中国建设银行密码重置网站
  • 搭建网站是什么专业资阳网络营销顾问招聘
  • 建个门户网站网站开发人员配备
  • 营销型网站建设 上海工程造价
  • 做暧暧暖网站想建个企业网站
  • 南通做外贸的公司网站建筑招聘求职网
  • 网站排名顾问江苏省建设网站首页