此次记录一次非常麻烦的调试问题,不是纯知识分享,只是记录这次调试过程引以为戒。
问题简介
这个功能是公司2021年写的老功能,一直都没有更新过代码,这次在导入一个1.03G的大文件进行读取的过程中出问题了。
简单介绍一下这个功能:
公司使用的spring boot框架构建项目,该功能为项目内的一个接口调用功能。该功能首先,通过远程接口下载文件到局域网sftp服务器上;下载完毕后将服务器文件下载到本机指定位置内;最后读取文件内容,识别其中的数据,将合法数据添加到数据库中。
出现的问题:
- 导出日志时,try...catch字段不产生任何报错,但是实际上没有任何动作。
- 内存溢出问题。
- json读取异常。
- 待补充。
问题解决过程
1、try...catch...字段不产生任何报错的问题。
这个问题属实是最大问题了,也是困扰很久的问题。
起因是这个功能没有任何报错,但是动作只进行到【下载文件到sftp服务器上】,之后的步骤就没出现了。
<ol>首先注意到没有任何报错的过程,于是添加了Logger类,对各个步骤添加了logger以便查看输入。
这个处理方式是:
<ul>引入logger相关类,之后在操作类中创建Logger对象,格式如下:- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- public class assetSyncForXN {
- private static final Logger logger = LoggerFactory.getLogger(assetSyncForXN.class);
- }
复制代码 在项目模块的application.yml配置中,配置logger的显示权限:
[code]logging: level: com.***.***: ERROR# 这里注意一下:level代表等级,代表下面的包能够展示日志log最低的等级。# 下面的示例语句,左边【com.***.***】代表包名,表示这个包下面的所有的包含类,都有这个的最低展示权限。# 右边【ERROR】表示【最低】展示权限,从低到高依次为DEBUG |