发布网友 发布时间:2024-09-07 03:31
共1个回答
热心网友 时间:2024-11-16 06:04
springboot动态日志管理(actuator)引入依赖
配置文件添加
management.endpoints.web.exposure.include=loggers
之后访问
即可看到每个文件的日志级别
查看某个目录的日志级别
]({目录名}
可以配置指定目录的日志级别
post请求修改指定目录日志级别:
{目录名}
请求提
再次查看此目录的日志级别发现已被修改
]({目录名}
springboot怎么看日志springboot内部使用CommonsLogging来记录日志,但也保留外部接口可以让一些日志框架来进行实现,例如JavaUtilLogging,Log4J2还有Logback。如果你想用某一种日志框架来进行实现的话,就必须先配置,默认情况下,springboot使用Logback作为日
SpringBoot接入轻量级分布式日志框架(GrayLog)
在文章正式开始之前,我分享下我以前负责过的一个系统,它的架构如下:
每次当我查问题的时候,我都能把问题初步定位在逻辑层,但为了能给业务方交代,我需要给证据业务方面(日志信息就是铁证)。
一个请求肯定是被这8台机器内的某一台处理,但具体是哪一台,我不知道。所以,我需要上每台机器上grep一把日志,然后才能找出对应的日志证明我的分析。
有的时候,可能接入层也需要一起参与进去,就排查一个问题,人都傻了了(翻看日志的时间占用了太久了)。
后来啊,看了同事的骚操作(在item2编写脚本:快速登录堡垒机(免去输入账号和密码信息),根据应用服务器数量来切割窗口并且切换到对应的日志目录)。说白了就是一键登录多台应用服务器。嗯,这查日志的速度比起以前又快了好多。
再后来,公司运维侧又主力推在Web页面上登录应用服务器(自动登录堡垒机),这能省去编写脚本(支持批量操作)。但从当时的体验上,没有问题item2访问得流畅(总感觉卡卡的)。
不过还有问题,因为我们在很多时候是不知道在info/warn/error哪个文件下。很多时候只能一个一个文件去查,虽然说可以直接查通配符一把查,如果日志过大,带来停顿时间也挺烦的。
系统一旦被问到业务问题,查日志的频率实在是太高了。于是我在某个Q规划的时候是想自己把日志信息写入到搜索引擎,顺便学习下搜索引擎的知识。然后这个规划被组内的某个大佬看到了,在底下评论:要不来试试Graylog?
原来组内本身就在维护了一个日志框架,只是我不知道...于是我接入了Graylog日志,工作效率杠杠提高了,凭借这个事情吹了一个Q。
自从接入了之后,我就没登录过应用服务器了,有次差点连grep都不会写了。
说起ELK,即便没用过肯定也听说过这玩意了,在后端是真的流行。这次austin接入一个比较轻量级的ELK框架:Graylog
这个框架我感觉蛮好用的,作为使用方接入起来异常简单(我估摸运维应该也挺简单的,很多用Graylog是直接发UDP到Server,不用在机器上装agent收集日志)
官方文档:
据我了解,有相当多的企业使用它来查看日志和业务监控告警,这篇文章我就直接让你们体验体验吧。
老样子,直接上docker-compose,如果一直跟着我的步伐,应该对着不陌生了。docker-compose.yml的内容其实我也是抄官网的,这里还是贴下吧(就不用你们翻了)
这个文件里唯一需要改动的就是ip(本来的端口是9000的,我由于已经占用了9000端口了,所以我这里把端口改成了9009,你们可以随意)
嗯,写完docker-compose.yml文件,直接docker-composeup-d它就启动起来咯。
启动以后,我们就可以通过ip:port访问对应的Graylog后台地址了,默认的账号和密码是admin/admin
随后,我们配置下inputs的配置,找到GELFUDP,然后点击Launchnewinput,只需要填写Title字段,保存就完事了(其他不用动)。
嗯,到这里,我们的GrayLog设置就完成了。
还记得我们austin项目使用的日志框架吗?没错,就是logback。我们要把日志数据写入Graylog很简单,只需要两步:
1、引入依赖:
2、在logback.xml配置graylog相关的信息:
在这个配置信息里,唯一要改的也只是ip的地址,到这里接入就完毕了,我们再打开控制台,就能看到日志的信息啦。
懂点GrayLog查询语法:这块我日常来来去去其实就用几个,我来展示下我平时用的吧。如果觉得不够,再去官网文档捞一把就完事了:
1、根据字段精确查询:full_message:"13788888888"
2、查询错误日志信息:level_name:"ERROR"
3、组合多字段查询:level_name:"INFO"ANDfull_message:"13788888888"
在接入的时候,仔细的小伙伴可能会发现我这边在Input的时候选择的是GELF,然后在引入Maven依赖的时候也有GELF的字样。那GELF是啥意思呢?
这块在官网也有给出对应的解释:TheGraylogExtendedLogFormat(GELF)isalogformatthatavoidstheshortcomingsofclassicplainsyslog
详细资料:
GELF是一种日志格式,能避免传统意义上的syslogs的一些问题,而我们引入的Maven依赖则是把日志格式化成GELF格式然后append到GrayLog上。
前几天有个老哥在GitHub给我提了个pullrequest关于swagger的,我昨天把他merge了,也升级了下swagger的版本。
之前我没用过swagger类似的文档工具,就这次pullrequest我也去体验了下swagger。
在初次的体验感觉是不错的:它能把项目的所有接口的文档信息都能在一个页面上统一管理,并且就能直接通过样例参数直接发送请求。通过注解的方式来进行编写文档,也不用担心代码改了然后忘了更新文档这事。
但是,后来我配置好对应的参数信息文档,再在swagger-ui体验了下,发现是真滴丑,看到这ui我还是阶段性放弃吧。
swagger的竞品还有好几个,我看ui貌似都要比swagger好看。不过,austin项目的主要接口就只有一个,我作为熟练掌握的markdown工程师能轻松胜任文档工作,就没再继续体验别的竞品了。
日志技术-SpringBoot使用日志tips:Ctrl+F快速定位所需内容阅读吧。
注意:SpringBoot默认的日志门面是slf4j-api,日志实现是logback-core,是SLF4J加Logback的组合。
1、快速入门
1、自定义logger对象日志级别
2、指定控制台输出消息格式
[%-5level]%d{yyyy-MM-ddHH:mm:ss}%c[%thread]===%m%n
[左对齐5:日志级别]日期:年-月-日时:分:秒类信息[线程信息]===日志信息换行
3、指定存放日志文件的具体路径
Ⅰ指定路径及文件名形式:logging.file.name=/logs/springboot.log;
Ⅱ指定日志存放路径,使用默认文件名spring.log:logging.file.path=/logs/
4、指定配置
给类路径下放上每个日志框架自己的配置文件,SpringBoot就不使用默认配置。
此处我们已Logback为例,如下:
可以看到,此时控制台输出的日志为红色,日期格式也多了毫秒,符合logback.xml配置,如下:
5、使用SpringBoot解析日志配置(灵活切换环境配置)
非常关键的一点,需要使用logback-spring.xml、log4j2-spring.xml命名的配置文件才能生效。
以下案例我们以logback-spring.xml为例,如下:
在appender内的encoder属性中我们配置了springProfile相关的内容。
如何我们dev的配置[%-5level]%d{yyyy-MM-ddHH:mm:ss.SSS}%c%M%L[%thread]---%m%n",如下:
6、将日志切换为log4j2(经常使用)
Ⅰ排除Logback的日志实现:spring-boot-starter-logging;
Ⅱ使用log4j2的日志启动器:spring-boot-starter-log4j2。
以上即为SpringBoot使用日志的全部内容,感谢阅读。
springboot读取数据库blog日志咋样还行我们编写任何SpringBoot程序,可能绕不开的就是log日志框架(组件)。
在大多数程序员眼中日志是用来定位问题的。这很重要。日志能干的事情很多,对于学习程序,测试的工程师来说,日志能够定位问题,解决问题,是最大的功能点。