agent打印不出日志

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了agent打印不出日志相关的知识,希望对你有一定的参考价值。


草丛里的码农
关注
java agent开发 日志打印 原创
2022-05-31 14:29:03

草丛里的码农 

码龄8年

关注
简介
目前java 打印日志用的比较多的就是slf4j配合log4j/logback进行日志打印,但是呢agent是独立的jar包,
使用slf4j就需要将包引入agent中,这样就可能和业务自身的slf4j log4j日志产生冲突

而且在agent包使用slf4j-api包后,需要保证agent的classLoader和业务的classLoader保持一致,否则找不到

需求
agent的日志打印可以不依赖于业务日志,如果用户有日志包依赖,也可以使用业务日志
agent的日志设置,用户可以在环境变量设置
问题
有时候出现包冲突,导致日志打印不出来
spring boot项目的classLoder和agent的classLoader不一致,sf4j相关包找不到。因为spring boot打包出来后是一个独立的jar包,jar包内部的依赖包由spring 自己的类加载器处理
在ide调试的时候没有问题,在linux环境运行就有问题。因为在ide调试的时候所有包都在一个classLoader下,可以找到相关的类
参考技术A 你可以尝试检查agent的配置文件,查看是否有设置打印日志的选项,并检查日志保存路径是否正确。

大数据调错系列之hadoop在开发工具控制台上打印不出日志的解决方法

(1)在windows环境上配置HADOOP_HOME环境变量

(2)在eclipse上运行程序

(3)注意:如果eclipse打印不出日志,在控制台上只显示

1.log4j:WARN No appenders could be found for logger (org.apache.hadoop.util.Shell).

2.log4j:WARN Please initialize the log4j system properly.

3.log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info

解决方法:

在src目录下,新建一个文件,log4j.properties,在文件中填入

log4j.rootLogger=INFO, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

log4j.appender.logfile=org.apache.log4j.FileAppender

log4j.appender.logfile.File=target/spring.log

log4j.appender.logfile.layout=org.apache.log4j.PatternLayout

log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

然后重启即可

1.获取更多大数据视频资料请加QQ群:947967114

以上是关于agent打印不出日志的主要内容,如果未能解决你的问题,请参考以下文章

大数据调错系列之hadoop在开发工具控制台上打印不出日志的解决方法

Android真机调试打印不出Log的解决方案

SpringCloudGateway使用Skywalking时日志打印traceId

nginx 日志打印post请求参数

fastreport二维码打印不出

佳能打印机 打不出黑色怎么办