Spring Boot自定义的Tomcat打印catalina和tomcat日志

Spring Boot自定义的Tomcat打印catalina和tomcat日志,第1张

Spring Boot内嵌的tomcat日志,支持配置accesslog,不过我们想打印catalina和tomcat日志是没有办法的,需要我们在日志文件中新增appender实现。

在resource下新增一个日志配置文件 logback-springxml ,然后在里面新增一个appender,用于写日志文件,定义日志滚动策略等配置。

新增2个logger,一个用于 orgapachecatalina 包下的日志,一个用于 orgapachetomcat ,引用上面定义的appender,这2个包下的日志就可以写到日志文件里了。

假设有一个jar包,里面有一个testtxt,里面有一行字符串 123abc ,现在要在一个以jar命令运行的spring-boot项目环境中读取,要怎么做?

假设把这个jar包,一个放到D盘的test目录下,一个放到spring-boot项目resources目录下的lib子目录里,可以使用以下两种方法分别读取:

使用mvn clean package打包项目,然后使用java -jar xxxjar执行该项目文件,观察日志文件就会发现,两种方式都成功了:

日志是项目中不能缺少的模块,目前项目中比较常用的是Log4j,这个日志是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输出到控制台、文件甚至是套接口服务器等等。通过配置文件可以控制每一条日志的输出格式,定义每一条日志信息的级别,更加细致地控制日志的生成过程。下面通过访问的方式来集成log4j。从maven依赖包,配置文件和项目中实际使用样例三个方面来记录。

第一步:我这里使用的是springboot,因为springboot自带log,咱们要使用log4j,先屏蔽了原来的log

第二步:加入log4j的依赖,一个接口,一个实现两个包

配置文件放置位置,项目Application所在module中的resources目录下。配置文件名称为:log4jproperties

配置内容:

其中,需要根据自己的情况配置的:

1日志保存位置和日志文件名称

2日志的记录内容格式

3日志输出等级:debug还是info

我这里是springboot的rest api项目中的controller中使用的实例

随着分布式的发展,开发问题排查过程的日志分析逐渐复杂,现在一般通过ELK系统整合分布式系统的所有日志进行分析,此时需要一个全局的日志id进行链路跟踪。

Log4j和Logback提供MDC,可以实现基于ThreadLocal级别的数据存储,从而实现系统内部同一线程日志打印的traceId一致性

备注:如需在系统内的多线程实现日志一致性,则可以通过进行参数传递方式传输traceId

日志配置xml中使用[%X{traceId}]引用日志id

当前服务中相同线程打印日志都会带上日志id,如需要使用线程池或异步线程处理业务,请自行传入参数或进行线程间的数据传输

先使用过滤器从请求头获取traceId,存储到HystrixRequestVariableDefault中,

然后拦截器中获取到traceId,加入RequestTemplate的请求头中

本教程通过过滤器、拦截器结合HystrixRequestVariableDefault实现系统内和跨系统的日志跟踪。

启动之后,会在jar所在目录生成一个nuhuplog日志文件,记录控制台的日志输出。

备注:主要看符号两边: ">" 对应输出什么和输出到哪里;

输出分为标准输出和错误输出,标准输出就是全输出,输出控制台信息;错误输出只是输出错误日志信息;

因此上面我们执行的 jar >nohuplog 2>&1命令,可以拆解成 > nohuplog 和 2> &1两个输出,只看符号“>”左边输出部分,分别代表默认标准输出到一个地方,然后错误日志输出到另一个地方,咱们后面再讲输出到什么地方。

输出到哪,分为输出到指定路径日志文件和重定向位置。

1指定路径:如下:> /data/work/loglog 这样便是指定输出到路径/data/work/loglog文件。

Linux上有一个特例路径/dev/null ,这路径就好像永久删除的回收站,当我们不需要输出任何信息时,就可以将输出指向/dev/null,那就不会有任何输出文件。

2至于重定向,就是将文件重定向到一个地址,如下:

> &1 重定向到标准输出的地址,啥意思,就是输出到已指定的标准输出的地址。

> &2 重定向到错误输出的地址,就是输出到已指定的错误输出的地址。

比如>nohuplog 2>&1 ,意思是前面默认标准输出到了nohuplog日志下,后面错误输出也指向标准输出的地址,也即nohuplog日志下。

命令后面加的 & ,可让命令在后台执行,否则关闭会话会停止程序。

(1)nohup java -jar jar >/data/loglog 2>/data/errlog &

解释:标准日志输出到/data/loglog文件,错误日志输出到/data/errlog文件。

(2)nohup java -jar jar >/data/loglog 2>&1 &

解释:标准日志输出到/data/loglog文件,错误日志重定向也输出到/data/loglog文件。

(3)nohup java -jar jar >/dev/null 2>/data/errlog &

解释:标准日志输出到/dev/null,也就是不输出标准日志,错误日志输出到/data/errlog文件。

一般采用上面(3)只输出错误日志就可以了,有需要的按照(1)进行输出。

大家好,一直以来我都本着 用最通俗的话理解核心的知识点, 我认为所有的难点都离不开 「基础知识」 的铺垫

「大佬可以绕过 ~」

如果你是一路看过来的,很高兴你能够耐心看完。之前带大家学了 Springboot 基础部分,对基本的使用有了初步的认识, 接下来的几期内容将会带大家进阶使用,会先讲解基础 中间件 的使用和一些场景的应用,或许这些技术你听说过,没看过也没关系,我会带大家一步一步的入门,耐心看完你一定会有 收获 ~

上期带大家学习了什么是 跨域 以及 Springboot 中如何处理它, 本期将带大家学习 SpringBoot 中如何集成 日志 工具,同样的,我们集成到 Springboot 中。最近github可能会被墙,所以我把源码放到了国内gitee上,本节我们依然使用上期的代码

本期没有太多的理论,大家跟着配就好了, 添加配置 resources/logback-springxml

配置好后, 我们运行项目,会发现跟目录多了一个 logs 的目录,那个就是日志文件,跟控制台产生的日志一样,被记录到文件里了。然后教大家怎么去打日志:

请求后发现控制台有打印,并且文件有记录,那么就成功了~ 依次类推,在你觉得需要记录的位置,进行日志记录就可以了,比如一些报错的地方或者一些关键点的地方

有时候,我们需要查看 sql 怎么执行的,但控制台啥输出没有可不行,下面教大家配一下:

配置好后,执行一下查询请求,会发现控制台有详细的 sql log 包括入参的值

本期就到这里结束了,总结一下,主要教大家如何在项目中配置 log ,因为我们的服务是跑在服务器上的,具体发生了啥,我们不知道,只能依赖 log ,所以还是比较重要的

最近在新建项目的过程中发现日志没有打印。loggingpath 不生效

在翻阅官方文档后发现,这个配置移动到了loggingfilepath了,改动后成功生成日志文件。

还是要多翻文档,不要自己瞎琢磨。

以上就是关于Spring Boot自定义的Tomcat打印catalina和tomcat日志全部的内容,包括:Spring Boot自定义的Tomcat打印catalina和tomcat日志、spring-boot项目直接读取jar包内文件的最简单方法、springboot项目集成logf4j详细流程记录等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9801379.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存