一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - MyBatis啟動時控制臺無限輸出日志的原因及解決辦法

MyBatis啟動時控制臺無限輸出日志的原因及解決辦法

2020-05-23 14:42isea533 JAVA教程

這篇文章主要介紹了MyBatis啟動時控制臺無限輸出日志的原因及解決辦法的相關資料,需要的朋友可以參考下

你是否遇到過下面的情況,控制臺無限的輸出下面的日志:

Logging initialized using ‘class org.apache.ibatis.logging.log4j.Log4jImpl' adapter.
Logging initialized using ‘class org.apache.ibatis.logging.log4j.Log4jImpl' adapter.
Logging initialized using ‘class org.apache.ibatis.logging.log4j.Log4jImpl' adapter.
Logging initialized using ‘class org.apache.ibatis.logging.log4j.Log4jImpl' adapter.
Logging initialized using ‘class org.apache.ibatis.logging.log4j.Log4jImpl' adapter.

這個錯誤只有在和Spring集成的情況下才會出現。

每次只要出現這個錯誤,我都知道是XML出錯了,但是具體是那個XML還沒法直接確認,因為這里的日志看不出來任何有用的信息。

想定位這個錯誤,我有一個常見的方法,就是從程序啟動的某一個入口斷點,然后逐步定位這個錯誤。

不過這種方式仍然很麻煩,這里要說的是一種迅速定位解決的辦法,操作起來很簡單。

找到org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory 類,在下面方法:

?
1
2
3
4
5
6
protected void autowireByType(
String beanName, AbstractBeanDefinition mbd, BeanWrapper bw, MutablePropertyValues pvs) {
這個方法大概在1200行左右。找到這個方法中catch異常的地方:
catch (BeansException ex) {
throw new UnsatisfiedDependencyException(mbd.getResourceDescription(), beanName, propertyName, ex);
}

在throw這一行斷點即可,這個地方是最早捕獲異常的地方,當Mapper.xml文件出錯的時候,這里的異常信息如下:

MyBatis啟動時控制臺無限輸出日志的原因及解決辦法

異常信息是很詳細的,具體異常文字如下:

org.springframework.core.NestedIOException:
Failed to parse mapping resource:
'file [F:\Liu\Git\bhgl\target\Franchisee-1.0\WEB-INF\classes\com\abel533\property\dao\EmployeeMapper.xml]';
nested exception is org.apache.ibatis.builder.BuilderException:
Error creating document instance.
Cause: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; 前言中不允許有內容。

打開這個出錯的XML后,發現一個很無語的錯誤:

MyBatis啟動時控制臺無限輸出日志的原因及解決辦法

不知道什么情況,開頭多了emplo,基本上只要是 XML 中出什么錯,都是類似的異常信息,一般都是 XML 解析出的錯。

還有一個問題,為什么出錯后只能看到無限輸出的一行日志,而看不到這里具體的異常信息呢?

通過追蹤代碼,發現在org.springframework.beans.factory.support.AbstractBeanFactory類中的方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
protected Class<?> getTypeForFactoryBean(String beanName, RootBeanDefinition mbd) {
if (!mbd.isSingleton()) {
return null;
}
try {
FactoryBean<?> factoryBean = doGetBean(FACTORY_BEAN_PREFIX + beanName, FactoryBean.class, null, true);
return getTypeForFactoryBean(factoryBean);
}
catch (BeanCreationException ex) {
// Can only happen when getting a FactoryBean.
if (logger.isDebugEnabled()) {
logger.debug("Ignoring bean creation exception on FactoryBean type check: " + ex);
}
onSuppressedException(ex);
return null;
}
}

這里捕獲異常后,直接return null導致異常被吞。

由于這里是最后一層捕獲異常的地方,而且這個地方捕獲到的異常范圍會更廣,因此在這里斷點查看問題也是很不錯的選擇,由于這里經過多層異常處理,真正的錯誤信息隱藏的比較深,如下圖:

MyBatis啟動時控制臺無限輸出日志的原因及解決辦法

看到這兒,相信再遇到這個問題的時候應該會很容易解決了。

原文鏈接:http://blog.csdn.net/isea533/article/details/51277786

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 日本免费全黄一级裸片视频 | 玩50岁四川熟女大白屁股直播 | 午夜大片在线观看 | 狠狠色综合久久婷婷色天使 | 韩剧消失的眼角膜免费完整版 | 精品视频在线免费播放 | 校园肉文高h | 3d欧美人禽交 | 色综合欧美色综合七久久 | 波多洁野衣一二区三区 | 亚洲一欧洲中文字幕在线 | 天天夜夜草草久久伊人天堂 | 暖暖 免费 高清 日本 中文 | 青青青国产 | 日产精品一卡2卡三卡4乱码久久 | 国产真实伦对白在线播放 | 被肉日常np高h | 亚洲午夜精品久久久久久人妖 | 精品欧美一区二区三区在线观看 | 果冻传媒天美传媒在线小视频播放 | 日韩高清无砖砖区2022 | 把老师操了 | china国产bbw| 日产免费自线一二区 | 男女姓交大视频免费观看 | 非洲一级毛片又粗又长aaaa | dasd817黑人在线播放 | 99久久99热久久精品免费看 | 亚洲 欧美 国产 综合久久 | 扒开双腿猛进入爽爽视频ai | 亚洲精品久久久成人 | 沉香如屑西瓜视频免费观看完整版 | 日韩欧美亚洲一区二区综合 | 暖暖 免费 高清 日本 在线 | 四神集团1涨奶是第几章 | 第一次破女视频国产一级 | a男人天堂 | 微福利92合集 | 四虎小视频| 丝袜足液精子免费视频 | 12-14娇小videos|