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在开发工具控制台上打印不出日志的解决方法