Java 如何在控制台中停止mybatis打印SQL脚本

Java 如何在控制台中停止mybatis打印SQL脚本,java,logback,slf4j,mybatis,ibatis,Java,Logback,Slf4j,Mybatis,Ibatis,我正在使用mybatis-3.4.6使用ScriptRunner执行sql脚本。它正在将整个脚本打印到控制台。我正在使用slf4j进行日志记录,我在logback.xml中包含了以下几行内容。但它仍在印刷 <logger name="org.mybatis" level="WARN" /> <logger name="java.sql" level="WARN" /> 在mybatis之前,我使用了ibatis。它没有像这样打印脚本 如何停止打印脚本?对我来说,它就

我正在使用
mybatis-3.4.6
使用
ScriptRunner
执行sql脚本。它正在将整个脚本打印到控制台。我正在使用
slf4j
进行日志记录,我在
logback.xml
中包含了以下几行内容。但它仍在印刷

<logger name="org.mybatis" level="WARN" />
<logger name="java.sql" level="WARN" />

mybatis
之前,我使用了
ibatis
。它没有像这样打印脚本


如何停止打印脚本?

对我来说,它就像一个
系统。因此,我做了以下更改以删除控制台日志。我不认为这是最好的解决方案

PrintStream tmp = new PrintStream(new OutputStream() {
    @Override
    public void write(int b) throws IOException {
        // do nothing
    }
});
PrintStream console = System.out;
System.setOut(tmp);
// ScriptRunner call
System.setOut(console);

我通过使用ScriptRunner.setLogWriter(null)方法解决了这个问题:


您试过了吗?正如它所说的,首先查找
slf4j
。但它不会选择,或者它只是系统输出。我也检查了提到的方法调用。以映射程序所在的包命名的记录器的有效级别是多少<记录示例中的code>org.mybatis
可能具有误导性。如果您的映射程序位于say
com.my.app.mappers
中,则需要将
com.my.app.mappers
的日志记录级别设置为
WARN
ScriptRunner sr = new ScriptRunner(connection);
Reader reader = new BufferedReader(new FileReader(scriptFile));
sr.setLogWriter(null);
sr.runScript(reader);