java -cp slf4j输出日志

背景

基于apache的ssh客户端连接远端30s就会断开,需要排查。
日志没有错误输出,tcpdump抓包显示我们先发送FIN断开连接,手上的资料排查不出问题。
线上环境重启开启debug日志需要重启服务,影响大。想的是先排除我们业务代码的影响,直接调用第三方包提供的ssh客户端做连接测试,看看能不能排除第三方的问题。

实现

最开始是打算自己编写j测试代码到线上环境测试,编写过程中发现apache的ssh客户端中带了main方法,而且通过命令行可以直接调通。一下子就省了很多事。

MINA-SSHD

sshd源码地址:https://github.com/apache/mina-sshd
sshd客户端main源码地址:https://github.com/apache/mina-sshd/blob/master/sshd-cli/src/main/java/org/apache/sshd/cli/client/SshClientMain.java

java -cp

调用jar包的main函数通过 java -cp 命令实现

第一版(报错)

注意带有main函数的类在命令行中要带上package,main函数接受的参数跟在类完整路径后面

java -cp xx.jar org.apache.sshd.cli.client.SshClientMain [args]

调用失败,缺少slf4j

第二版(无日志输出)

添加slf4j的jar包

java -cp slf4j-api-1.7.31.jar:xx.jar org.apache.sshd.cli.client.SshClientMain [args]

基本达到预期,成功运行,但是没有日志输出

第三版(日志输出控制台)

添加logback的两个jar包

java -cp logback-classic-1.2.3.jar:logback-core-1.2.3.jar:slf4j-api-1.7.31.jar:xx.jar org.apache.sshd.cli.client.SshClientMain [args]

运行后,我要的内容全拿到了,可以到线上环境使用了。就是不太方便,默认级别是DEBUG,日志全部输出到控制台看着很乱。

第四版(可控的日志输出)

添加logback.xml文件所在路径path

java -cp path:logback-classic-1.2.3.jar:logback-core-1.2.3.jar:slf4j-api-1.7.31.jar:xx.jar org.apache.sshd.cli.client.SshClientMain [args]

成功实现通过修改logback.xml控制日志输出。
中间其实有个3.5版在jar包所在路径添加了logback.xml文件但是不生效,经过多番查找,发现是要将logback.xml所在路径加到命令参数,这点是比较关键的。

参考

https://www.cnblogs.com/grub007/p/14217116.html
https://www.cnblogs.com/klb561/p/10850803.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值