tomcat 中启动一个 java web 项目
tomcat 启动日志不报数据库连接异常信息,是咋回事?
数据库连接用的 dbcp,hibernate。
场景复现:在数据库配置文件配错误的数据库连接信息,保证启动项目无法初始化数据库连接。
启动后,启动成功,控制台没打印数据库连接异常信息。
项目中集成 log4j,配置中设置在 debug.log 文件中打印 debug 信息。 待项目启动后,可以在 debug.log 中看到数据库连接异常信息。
谢谢。
1
gouzhiyuanchina 2019-09-02 17:31:08 +08:00
连接池的配置 是不是没配置 init 多少个 或者设置成 0 了?
|
2
hustmisa 2019-09-02 17:38:01 +08:00
你写的问题好难理解,尤其倒数第二句“待项目启动后,可以在 debug.log 中看到数据库连接异常信息”
1、你配置的 log4j 日志是否可以正常输出业务日志?如果不可以先配好 log4j 2、如果业务日志可以输出,项目启动初始化 db 的代码是否执行成功,可能根本没有初始化数据库连接池 3、如果初始化连接池了,log4j 配置了 dbcp 的连接包名么,包名配置不正确会导致日志无法输出;估计你没配这个,连接错误日志会抛到 catalina.out 也就是控制台 |
4
hubin0203 OP @gouzhiyuanchina 配置没问题,如果数据库连接信息( url,库名,用户名,密码)配置正确,就连接正常,debug. log 中便不报错。
|
5
hubin0203 OP @hustmisa 谢谢,log4j 配置生效了,因为在 debug. log 中可以打印出异常信息,主要就是启动项目中,无论在 IDE 的 console 中还是打成 war 包扔 tomcat 中运行( Windows 环境下),cmd 的控制台中都不打印数据库连接异常信息,不知道这么说您能理解不
|
6
hustmisa 2019-09-02 18:16:37 +08:00
@hubin0203 嗯嗯 理解;错误连接情况下,tomcat 依旧可以启动,数据库连接的代码应该是单独一个线程吧,可以 try 这部分代码打印异常日志试试么;
还有个想法不知道对错,dbcp 里边有 commons-logging 的 dependency,会不会你项目本身引入了不同版本 logging 的 jar 包导致冲突,日志无法打印? |
7
hubin0203 OP @hustmisa 嗯嗯,谢谢,改天我去试试看。因为新入职,要维护一个老项目,这个项目 maven 都没用到,改天去检查一下 jar 包,谢谢啦
|
8
LeeSeoung 2019-09-02 18:43:26 +08:00
数据库连接异常信息 是啥?能贴出来?
|
9
hubin0203 OP @LeeSeoung 这不重要,我随便写了个 IP,肯定连不上的,问题在于 tomcat 启动日志里没有数据库连接异常信息
|
10
fmumu 2019-09-02 20:55:33 +08:00 via Android
日志 logAppender 有配置到 console 吗,log 配置放出来来看看
|
12
Aresxue 2019-09-03 09:45:10 +08:00
1.数据库在初始化的时候没有进行连接的建立;
2.数据库连接报错了,只不过日志中没有输出; 3.日志输出了, 只不过被 console 屏蔽掉了; 4.console 没有屏蔽, 只是你没找到。 |
13
401825317 2019-09-03 16:30:00 +08:00
打断点
第一打在数据库连接池,确定初始化 第二打在连接池成功后日志输出确定使用的 log 和级别 |