1. 本地windows启动服务,日志能正常输出,包括console 及日志文件,但上传服务器之后日志不打印,nohup可通过去掉start.sh 脚本中的 ‘/dev/null 2>&1 & ’删除, ‘2>log &’ 表示输出到错误文件,前者表示啥也不输出。
2. 至此,nohup能正常输出,但是日志文件依然啥也没有。接下来清理所有的log4j 和slf4j 的日志冲突,所有少的jar包,重新引。。。
3. 然后。。commons-logging 相关的日志出来了,log4j还是没有。。。查阅资料,说common logging 和log4j 有些版本互不兼容,于是,改logging的版本为1.1.3(原先是1.2)。。。然后,,,还在尝试ing...
4. emm windows 和linux上的日志jar包我都查看过,完全一致,windows能正常打日志,(本地运行),但是服务器就没有~~~至此怀疑windows 和linux的写文件的逻辑不太一样???只能这种解释了,,求大神给我解释一番。。。
5. 然后还是不行,,检查正常的服务器log4j 的jar包发现少了一个log4j-1.2.4... 加上 ,,,最后一次尝试。。。
6. 依旧不行,,,引入的log4j 版本太多,去掉common-logging 和logback 相关的jar包,还一个清净的jar包空间。。。最后还剩以下jar包。。去掉 log4j-over-slf4j ,,增加了jcl-over-slf4j 。。。jcl-这个包是slf4j 绑定log4j之后需要加载的清除冲突的jar包,所以加上,,,看日志加载方式LogFactory使用的哪种方式,,咱使用的是slf4j...
7. 结论: 感觉最终生效的应该是去掉了log4j-over-slf4j...因为我们系统是使用slf4j接口bound桥接(绑定)到log4j ,而如果存在log4j-over-slf4j,则会导致log4j的日志不生效,emm 这里也说到 一个jar包顺序的问题,如果后续有log4j的包,是不会允许冲突的,但是如果over在后面,则会有问题(这点是在别的博客看到的,有待确认)。。 emmm反正尽量引用更少的jar包来解决该问题。。。日志冲突实在太折腾人了。。。
,
网友评论