范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

SpringBoot2。x系列教程54SpringBoot整合日志记录项目重要信息

  前言
  我们在进行项目开发时,无论是前端还是后端,都必须进行日志的记录。通过日志,来记录项目开发、运行时产生的各种异常信息和重要数据。这样我们才能对项目的异常进行定位,对项目的后期运营提供数据支撑。
  但我们该如何进行日志记录呢?又有哪些手段可以实现日志功能呢?请跟着壹哥今天的这篇教程,来学习项目中的日志记录功能吧。一. Java中常用的日志框架1. 关于System.out.println
  我们在项目开发中经常需要打印日志,输出一些调试信息,对于简单的小案例,可能就直接使用Java自带的System.out.println语句进行输出就可以了。那有的朋友可能会问,既然已经有这样的输出语句了,为什么Java中还有大量的专业日志框架呢?
  我们可以仔细想想,如果项目非常大,很多地方都需要打印日志,这样就会带来一个非常麻烦的问题:一旦哪天程序员决定不要显示这些System.out.println的东西了,就只能一行行的把这些垃圾语句注释掉;如果哪天又需调试变量值,则只能再一行行去掉这些注释恢复System.out.println语句。
  这样不是太麻烦吗?2. Java中常用的日志框架java.util.loggingcommons-logginglog4jlogbackslf4j等3. Log4J日志框架
  Log4J是Apache的一个开源项目,通过使用Log4J,我们可以控制日志信息是输送到控制台还是文本文件等我们期望输出到的地方,另外我们也可以控制每一条日志的输出格式。并且可以通过定义每一条日志信息的级别,能够更加细致地控制日志的生成过程。
  我们可以通过一个配置文件来灵活地进行上面的配置,而不需要修改应用的代码。Log4J作为前几年比较流行的日志框架,给我们应用开发和维护带来了很大的便捷。4. Logback日志框架
  但是现在log4j已经逐渐被Logback取代了,因为Logback相对log4j更具优势。4.1 Logback的主要特性更快的执行速度:
  基于先前的Log4j,Logback 重写了内部的实现,在某些特定的场景上,Logback可以比log4j的执行速度快上10倍。更小的内存消耗:
  在保证Logback的组件更快执行的同时,所需的内存更加的少;充分的测试:
  Logback 历经了几年时间的充分测试,这正是人们选择Logback而不是Log4j的重要原因。4.2 Logback的构成logback-core:
  logback-core是其它模块的基础,其它模块基于它构建;logback-classic:
  logback-classic类似于Log4J,它被认为是 Log4J的一个改进版,并且它实现了简单日志门面 SLF4J。logback-access:
  logback-access主要作为一个与 Servlet容器交互的模块,比如说tomcat或者 jetty,提供一些与 HTTP访问相关的功能。
  那Sl4J又是什么呢?5. slf4j框架:(The Simple Logging Facade for Java)
  即面向Java的简单日志门面框架。简答讲slf4j是一系列的日志接口,slf4j是作为一个抽象的日志框架,但是并没有提供真正的实现。slf4j为各种日志框架提供了一个统一的入口,使用户可以用统一的接口来输出日志,动态地决定要使用的具体的实现框架,比如Logback,Log4j,common-logging等框架都实现了这些接口。二. SpringBoot整合Logback日志1. SpringBoot的默认日志框架
  在SpringBoot内部中,默认就集成了LogBack的日志依赖,所以我们其实在实际开发中不需要直接添加该依赖。
  你会发现spring-boot-starter其中包含了 spring-boot-starter-logging,Spring Boot为我们提供了很多默认的日志配置,所以,只要将spring-boot-starter-logging作为依赖加入到当前应用的classpath,则"开箱即用"。
  SpringBoot默认使用LogBack来记录日志信息,默认根据base.xml中的配置内容来输出到控制台和文件之中。
  我们可以通过查看spring-boot-starter-parent依赖关系:
  spring-boot-starter-parent的父级依赖。
  再查看上级依赖包,会发现一个关于logging的依赖包:
  再往上查看,会发现内部自带的日志依赖包。
  在SpringBoot中整合日志其实非常简单,过程如下。3. 创建web项目
  我们按照之前的经验,创建一个web程序,并将之改造成Spring Boot项目,具体过程略。
  4. 添加依赖包              org.springframework.boot         spring-boot-starter-web                    org.springframework.boot         spring-boot-starter-test         test                         org.projectlombok          lombok       复制代码5. logback的日志等级
  日志级别从低到高分为:
  TRACE < DEBUG < INFO < WARN < ERROR < FATAL6. SpringBoot默认的base.xml配置文件
  SpringBoot的日志是根据level来控制的,根据不同的level来显示不同的日志内容。那么在哪里控制日志level呢?一般我们要在resources目录下配置spring-logback.xml文件来控制,如果我们什么配置都没写,那么Springboot会采用默认的配置。
  这里就是Springboot对logback配置的地方,base.xml里,可以看到root level=INFO,这个代表该项目默认是输出最低为info级别的日志。然后看到有两个append-ref,分别为console何file,这两个分别对应上面引用的两个include resource里的xml,每个名字对应一个处理类。
  ConsoleAppender和FixedWindowRollingPolicy都是logback提供的两个Appender处理类,Appender类代表了对日志的处理方法,这个可以自定义。系统提供了很多个Appender,基本满足了大部分场景的需求,像Console就是输出到控制台的,System.out.print之类的,而File的就是输出到日志文件的。7. 自定义的logback-spring.xml文件详解7.1 配置文件的精简结构             魔力小佳佳                //xxxx                       //xxxx                                //xxxx         复制代码
  这个文件在springboot中默认叫做logback-spring.xml,我们只要新建一个同名文件放在resources下面,配置即可生效。contextName
  每个logger都关联到logger上下文,默认上下文名称为"default"。但可以使用contextName标签设置成其他名字,用于区分不同应用程序的记录。property
  用来定义变量值的标签,property标签有两个属性,name和value;其中name的值是变量的名称,value的值时变量定义的值。通过property定义的值会被插入到logger上下文中。定义变量后,可以使"${name}"来使用变量。如上面的xml所示。logger
  用来设置某一个包或者具体的某一个类的日志打印级别以及指定appender。root
  根logger,也是一种logger,且只有一个level属性。appender
  负责日志的组件。7.2 常用的appender的种类ConsoleAppender:把日志添加到控制台;FileAppender:把日志添加到文件;RollingFileAppender:滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件,它是FileAppender的子类。7.3 filter
  filter其实是appender里的子元素,它作为过滤器存在,执行一个过滤器会有返回DENY,NEUTRAL,ACCEPT三个枚举值中的一个。DENY:日志将立即被抛弃不再经过其他过滤器;NEUTRAL:有序列表里的下个过滤器过接着处理日志;ACCEPT:日志会被立即处理,不再经过剩余过滤器。7.4 常用的过滤器:ThresholdFilter:临界值过滤器,过滤掉低于指定临界值的日志。当日志级别等于或高于临界值时,过滤器返回NEUTRAL;当日志级别低于临界值时,日志会被拒绝。   INFO  复制代码LevelFilter:级别过滤器,根据日志级别进行过滤。如果日志级别等于配置级别,过滤器会根据onMath(用于配置符合过滤条件的操作) 和 onMismatch(用于配置不符合过滤条件的操作)接收或拒绝日志。     INFO        ACCEPT        DENY     复制代码8. 创建logback-spring.xml文件8.1 创建logback-spring.xml配置文件
  我们可以在resource目录下创建一个命名为logback-spring.xml的配置文件。
  <?xml version="1.0" encoding="UTF-8"?>                 logback                                                                                          debug                               ${CONSOLE_LOG_PATTERN}                          UTF-8                                                ${log.path}/log_debug.log                               %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n             UTF-8                                                      ${log.path}/debug/log-debug-%d{yyyy-MM-dd}.%i.log                              100MB                                       15                                        debug             ACCEPT             DENY                                           ${log.path}/log_info.log                               %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n             UTF-8                                                     ${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log                              100MB                                       15                                        info             ACCEPT             DENY                                           ${log.path}/log_warn.log                               %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n             UTF-8                                         ${log.path}/warn/log-warn-%d{yyyy-MM-dd}.%i.log                              100MB                                       15                                        warn             ACCEPT             DENY                                           ${log.path}/log_error.log                               %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n             UTF-8                                         ${log.path}/error/log-error-%d{yyyy-MM-dd}.%i.log                              100MB                                       15                                        ERROR             ACCEPT             DENY                                                                                                                                                                                复制代码8.2 关于root节点
  root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性,不区分大小写,默认是DEBUG。
  上图的节点好比一个方法,这个方法的意思是全局打印等级为INFO,而且四个变量都执行,即正常的控制台输出和warn、info、error的三个文件输出,可以到对应的控制台和日志文件里面看到的确有日志。
  反之倘若我们level定为Debug,或者去除name为"WARN"的则是输出Debug以上等级的日志,WARN.log日志文件也不会再有日志打印进去。9. 创建Controller打印日志
  我们可以在类上添加Lombok插件中的@Slf4j注解,在需要打印的类名上加上该注解即可,用来替代下面语句的编写:private Loggerlogger = LoggerFactory.getLogger(this.getClass()); 复制代码
  日志类:package com.yyg.boot.web;  import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;  /**  * @Author 一一哥Sun  * @Date Created in 2020/5/14  * @Description Description  */ @Slf4j @RestController public class LogController {      @GetMapping("/log")     public String showLog(){          log.debug("debug级别的日志信息...");         log.info("info级别的日志信息...");         log.warn("warn级别的日志信息...");         log.error("error级别的日志信息...");          return "ok";     }  } 复制代码10. 创建application.yml
  在这个application.yml配置文件中,可以在这里设置log的级别。server:   port: 8080 spring:   application:     name: log-demo #设置log级别 logging:   level:     root: debug   #设置存储位置   #path: ./logs   #设置配置文件的名称位置   #config: classpath:/logback-dev.xml 复制代码11. 创建入口类package com.yyg.boot;  import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;  /**  * @Author 一一哥Sun  * @Date Created in 2020/5/14  * @Description Description  */ @SpringBootApplication public class LogApplication {      public static void main(String[] args){         SpringApplication.run(LogApplication.class,args);     }  } 复制代码三. 启动项目进行测试
  并且在我们的磁盘中也可以看到输出了日志文件。
  四. 屏蔽某个或某些类的日志记录
  如果我们在项目中需要屏蔽某个或者多个包中不需要输出日志的类,那么我们可以修改application.yml添加对应配置:
  Log2Controller类内容如下:
  可以看到此时控制台没有对应的日志信息输出。
  五. 多环境配置
  我们开发中会有不同的环境,我们可以根据不同的环境(prod:生产环境,test:测试环境,dev:开发环境)来定义不同的日志输出,可以在logback-spring.xml中使用 springProfile节点来定义,方法如下:
  我们可以在启动服务的时候通过指定 profile(如不指定使用默认),如指定prod 的方式为:java -jar xxx.jar –spring.profiles.active=dev 复制代码
  来加载不同环境下的日志配置。
  另外在application.yml配置文件中,也有对应的profiles.active属性来控制。
  结语
  至此,我们就实现了多环境下的日志记录功能,你有没有搞明白今天的内容呢?请给壹哥留言,说说你今天的收获吧。

贫困家庭,有合作医疗,去掉能报销的,剩下的还无力承担怎么办?既然你说了有合作医疗证明你是农村户口,我是一名乡镇民政办主任,在这个事情上我有一定的发言权,我来告诉你应该怎么办。贫困户等特殊困难群体的医疗保障和救助政策。你说是贫困家庭,这个我不上海至重庆三峡旅游攻略有哪些?三峡七百里中,两岸连山,略无阙处。重岩叠嶂,隐天蔽日。南北朝地理学家郦道元的这篇三峡向我们展示了雄奇的三峡风光。由瞿塘峡,巫峡,西陵峡以及大宁河小三峡等组成的三峡景观带是中国10大赤水十大旅游景区有哪些?感谢邀请。赤水为贵州省县级市,由遵义市代管。目前为止有世界自然遗产1个(中国丹霞赤水)国家级风景名胜区1个(赤水风景名胜区)国家森林公园2个(燕子岩国家森林公园)国家级自然保护区2为什么五笔字型那么好,拼音输入法却成为了潮流?为什么五笔字型那么好,拼音输入法却成为了潮流?答,五笔字型输入法在国内刚有PC机的时候,大火了一场,现在被拼音反超的原因如下(一)时间长了,五笔字型输入法有时会有个别字的打法忘记了2000元内的手表,买卡西欧还是西铁城?求大神们推荐?2000元去选手表,我也会推荐日本三大腕表品牌精工卡西欧西铁城,除了卡西欧不做机械表,西铁城和精工一样是石英机械通吃,卡西欧和西铁城让我选的话,我会偏爱于西铁城,佩戴起来较为正式。你听过哪些匪夷所思的故事?有一个未婚年青女老师带着孩子们去赏春踏青,结果自己却莫名其妙地失踪了。有一年清明节前后,当地小学校组织学生踏青游玩。我们这里的春天来到晚,这个时节在太阳照不到的地方还残留着没有融化有人说奇瑞车好,但买车时却买了吉利,为什么会出现这种现象?三方面原因,第一,奇瑞虽然良心且技术好,但是不会做广告,不会宣传自己,从来说不出什么最美这类的词来。而吉利在这方面可是行家。加上销售环节有些不给力,所以就被一部分人给排除了。第二,途锐怎么样?没有试驾过却收到邀请,只能晒晒静态体验了。给车保养的工夫去展厅看的,这是2。0T版本,指导价63。68万,目前这家店只有不到2万块钱的象征性优惠,预计落地超过65万。低配版LED大广州有哪些古镇适合周末去走走看看?广州辖下的古镇应该只有番禺区的沙湾镇,它距离广州市区只有230公里,自驾或公交出行都非常便捷。番禺区沙湾古镇镇沙湾古镇是中国历史文化名镇,它既是广东粤剧和广东音乐的发源地。镇内的古太子车能跑西藏吗?专业解析摩托车故障,精准推荐所需车型。大家好,我是骑士分享欢迎您的关注!太子摩托车能跑西藏吗?这个问题的答案是肯定的,完全没问题。进行长途摩旅时,虽然车型的结构会影响骑行效果,但只博士学位有什么用?没什么用!有用的是为取得博士学位而发表的论文水平,做过的科研项目水平,学习掌握的知识及应用水平,还要参考你导师的国际国内学术地位和学历水平,最后是你能为单位和社会做出的贡献,自然单
星期六的美梦第89节山洞的秘密同心圆社区新来的两个美女韩敏敏和张露可不是省油的灯,胆子大,能折腾,对社区现在的传统娱乐体育活动根本不感兴趣,她们有更时尚和刺激的爱好。她们开创了社区的滑雪运动,让老林和立军照着网超8万人研究证实这个时段运动,中风和心脏病风险更低运动有益心脑健康,但什么时间运动对心脏和大脑的增益效果最大?近日,发表在欧洲预防心脏病学杂志上的一项新研究发现一天24小时中,上午8001100进行锻炼,心脏病和中风的发生风险均最美媒最新研究显示,越来越多的美国原住民和黑人儿童经历过种族歧视中国日报网11月18日电根据发表在美国骨科医学杂志上的一项研究显示,美国越来越多的原住民和黑人父母报告说他们的孩子有过种族主义经历。据美国有线电视新闻网(CNN)17日报道,该研究双11各行送优惠!新一期(11。6至11。12)银行微信影响力榜单出炉金鸡揭晓了!半马跑完了!新一期银行微信影响力榜单也沐浴着厦门的冬日暖阳火热出炉了!本期的第一名依然是厦门农商银行,再度创下三连冠的奇迹。厦门银行厦门业务管理总部从上期的第五回升至本APEC峰会太太团亮相!越南夫人穿翡翠绿奥黛惊艳,日本夫人小清新APEC峰会太太团们亮相真是太养眼,当地时间11月18日,在泰国总理夫人娜拉蓬陪同下,太太团们参观了国家艺术博物馆,68岁的泰国总理夫人作为东道主夫人,这几天的造型都是富有泰国传统双减政策下如何开展幼小衔接教育工作李秀云张爽摘要幼小衔接的教育工作是教师和家长一直关注的话题,它的重要内容包括培养幼儿良好的学习习惯生活习惯运动能力和心理适应能力等,这些习惯和内容的培养直接影响着幼儿入学后的学习状2022年下半年公招考生备考攻略,请收悉2022公招考试必备攻略助你一臂之力如题。众所周知,四川监狱是一个有温度有情怀的良心官微,眼瞅着今年下半年公务员考试即将开考,这时候我们怎么能不为广大考生做点儿啥呢?想考生之所想急怀孕初期有什么症状?怀孕对于女性朋友来说是一件很伟大的事情,很多年轻的女性朋友在刚刚怀孕的时候,不能确定自己怀孕了。那么在怀孕早期身体会有哪些表现呢?胃肠道症状在怀孕后多在停经6周后,孕妇由于体内激素学了备用,宝宝血管瘤破溃开始出血要怎么护理?今天门诊迎来了一位慌慌张张的小患者,原来是孩子不小心抓破了脸上的血管瘤,因为开始流血所以不知道怎么处理了。小孩子的血管瘤如果破溃开始流血,首先家长别紧张别着急,咱们先给孩子进行止血孩子抑郁,害怕同学孤立,害怕同学嘲笑,一次催眠就释然轻松啊漫老师催眠抑郁恐惧双相焦虑强迫惊恐!一个初中孩子,抑郁焦虑,一去学校就难受。其中有一个原因是关于人际,她害怕朋友不理她,害怕朋友孤立她,甚至害怕朋友嘲笑她。如何疗愈?催眠疗愈深度李信狂铁喜上加喜,三形态新英雄白龙马来临,武则天和女娲笑哭王者至少也是当下十分火热的手游,人气也是一天一天逐步缓慢的增长着,所以王者为了能够让玩家们体验到多元化,也是积极出着新皮肤。李信狂铁喜上加喜李信作为王者当中的一位战士英雄,和狂铁基