标签:java maven pom-xml logging jooq
最近我添加了新的依赖项目来生成.xls文件.
的pom.xml
<dependency>
<groupId>org.jxls</groupId>
<artifactId>jxls</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.jxls</groupId>
<artifactId>jxls-poi</artifactId>
<version>1.0.0</version>
</dependency>
码
public StreamingOutput createStreamedExcelReport(Map<String, Object> params, String templateName, String[] columnsToHide) throws Exception {
try(InputStream is = ReportGenerator.class.getResourceAsStream(templateName)) {
assert is != null;
final Transformer transformer = PoiTransformer.createTransformer(is);
AreaBuilder areaBuilder = new XlsCommentAreaBuilder(transformer);
List<Area> xlsAreaList = areaBuilder.build();
Area xlsArea = xlsAreaList.get(0);
Context context = new PoiContext();
for(Map.Entry<String, Object> entry : params.entrySet()) {
context.putVar(entry.getKey(), entry.getValue());
}
xlsArea.applyAt(new CellRef("Sheet1!A1"), context);
xlsArea.processFormulas();
return new StreamingOutput() {
@Override
public void write(OutputStream out) throws IOException {
((PoiTransformer) transformer).getWorkbook().write(out);
}
};
}
}
不幸的是,它可能会打开jOOQ调试日志记录,这非常糟糕,因为它会记录所有数据库查询.应用程序正在对.xls进行大查询,因此它不应该记录(在3分钟内输出~1,5GB).
日志示例
08:08:23.094 [http-bio-8080-exec-7] DEBUG org.jooq.tools.LoggerListener - Executing query : select "XXXXXXXX"."XXX", "XXXXXXX"."XXXXXXX" from "XXXXX" where "XXXXX"."XXX" = ?
08:08:23.095 [http-bio-8080-exec-7] DEBUG org.jooq.tools.LoggerListener - -> with bind values : select "XXXXXXXX"."XXX", "XXXXXXX"."XXXXXXX" from "XXXXX" where "XXXXX"."XXX" = 'XXXX.XXXXXXXXXXXXXXXXXXX'
08:08:23.098 [http-bio-8080-exec-7] DEBUG org.jooq.tools.StopWatch - Query executed : Total: 4.17ms
08:08:23.099 [http-bio-8080-exec-7] DEBUG org.jooq.tools.LoggerListener - Fetched result : +----------------------------------------+-----------+
08:08:23.100 [http-bio-8080-exec-7] DEBUG org.jooq.tools.LoggerListener - : |KEY |VALUE |
08:08:23.100 [http-bio-8080-exec-7] DEBUG org.jooq.tools.LoggerListener - : +----------------------------------------+-----------+
08:08:23.100 [http-bio-8080-exec-7] DEBUG org.jooq.tools.LoggerListener - : |xxxx.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX|0 0 3 * * ?|
08:08:23.100 [http-bio-8080-exec-7] DEBUG org.jooq.tools.LoggerListener - : +----------------------------------------+-----------+
08:08:23.100 [http-bio-8080-exec-7] DEBUG org.jooq.tools.StopWatch - Finishing : Total: 6.756ms, +2.586ms
最佳答案:
通过日志配置彻底修复
默认情况下,jOOQ通过它首先在类路径上发现的这三个日志框架中的任何一个使用调试日志记录:slf4j,log4j,java.util.logging. jxls库通过slf4j as can be seen in its pom.xml依赖于logback:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.12</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.12</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.3</version>
</dependency>
为了关闭jOOQ调试日志记录,您应该相应地配置日志框架(in this case: logback).
在jOOQ中快速修复:
您还可以通过指定以下内容直接关闭jOOQ中的大多数日志记录:
Settings.withExecuteLogging(false);
有关详细信息,请参阅:
http://www.jooq.org/doc/latest/manual/sql-execution/logging
标签:java,maven,pom-xml,logging,jooq 来源: https://codeday.me/bug/20190516/1115820.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。