Java应用对接IBM Datastage时如何屏蔽重复MongoDB集群日志?
问题:Datastage环境下过滤MongoDB重复连接日志的方案
我的Java应用连接IBM Datastage,使用com.ibm.is.cc.javastage.api中的日志组件记录日志。客户要求清理日志,移除如下重复的MongoDB集群日志:
Java_InsSQLServer4,5: [cluster-ClusterId...INFO org.mongodb.driver.connection - Opened
connection [connectionId{localValue:3, serverValue:50197}] to ...
但该库没有类似Java默认Logger的getLogger()方法实现此操作,请问在Datastage环境下是否有可行方案?
可行方案
1. 自定义日志包装类
基于com.ibm.is.cc.javastage.api的日志组件封装一层自定义逻辑,在输出日志前做过滤判断:
- 捕获原始日志内容,检查是否包含
org.mongodb.driver.connection - Opened connection这类特征字符串 - 如果匹配则跳过输出,否则调用原日志组件方法记录
示例代码片段:
import com.ibm.is.cc.javastage.api.Logger; public class FilteredLogger { private Logger delegate; public FilteredLogger(Logger delegate) { this.delegate = delegate; } public void info(String message) { // 过滤MongoDB连接日志 if (message.contains("org.mongodb.driver.connection - Opened connection")) { return; } delegate.info(message); } // 按需实现warn、error等其他日志方法 }
在Java Stage中使用这个包装类替代原始Logger实例即可。
2. 调整MongoDB驱动日志级别
直接降低MongoDB驱动的日志级别,从根源减少这类日志输出:
- 在Datastage的Java运行环境配置中,添加JVM参数:
-Dorg.mongodb.driver.connection=WARN - 这样
INFO级别的连接日志会被自动屏蔽,只输出更高级别的警告或错误日志
3. Datastage日志后处理
如果前两种代码层面的方案受限,可以在日志生成后做过滤:
- 利用Datastage的日志管理工具,配置日志过滤规则,匹配目标日志特征并丢弃
- 或者编写脚本定期清理日志文件,删除包含指定特征的重复行
内容的提问来源于stack exchange,提问作者R.S.
相关产品推荐
相关产品推荐

