使用 new AipImageSearch 初始化实例时, 源代码会对 Log4j Logger root 动态增加一个Appender(ConsoleAppender)
protected BaseClient(String appId, String apiKey, String secretKey) {
this.appId = appId;
this.aipKey = apiKey;
this.aipToken = secretKey;
isAuthorized = new AtomicBoolean(false);
isBceKey = new AtomicBoolean(false);
accessToken = null;
expireDate = null;
state = new AuthState();
// init logging
String log4jConf = System.getProperty(AipClientConst.LOG4J_CONF_PROPERTY);
if (log4jConf != null && !log4jConf.equals("")) {
PropertyConfigurator.configure(log4jConf);
}
else {
BasicConfigurator.configure();
}
}
使用者很容易会让程序逻辑进入到 BasicConfigurator.configure(); 这个方法里面。
static public void configure() {
Logger root = Logger.getRootLogger();
root.addAppender(new ConsoleAppender(new PatternLayout(PatternLayout.TTCC_CONVERSION_PATTERN)));
}
很明显, 你们提供的包对使用方项目日志产生了非常大的影响, 你们不应该这样来设计开发。
建议: 你们应该使用日志门面框架来完成日志的记录, 比如slf4j这样的框架, 而不应该在第三方包里面使用具体日志实现框架。非常感谢
更改源码重新打包或者单独给sdk提供一个配置文件
参考:
https://wangyongxu.github.io/2019/01/30/%E7%99%BE%E5%BA%A6sdk%E6%97%A5%E5%BF%97%E9%97%AE%E9%A2%98/
太睿智了,我初始化一次client,给我多打印了一遍日志,现在我每个sql语句都有好几十遍日志了,动别人的日志很好玩吗?还没地方给你配置,只能下源码手动改了。
你自己代码有问题