2014-10-31 544 views
0

我正在尝试开发一个CLI命令,它使用rest从服务器数据库返回一列员工列表。我使用restTemplate.getObject()方法来获取列表。这工作正常,但在控制台中,我得到调试日志如如何在使用restTemplate时禁用或路由调试日志

3:06:58.564 [main] DEBUG o.s.web.client.RestTemplate - Setting request Accept header to  [application/xml, text/xml, application/*+xml, application/json] 
13:06:58.989 [main] DEBUG o.s.web.client.RestTemplate - GET request for "https://ip:8080/service/employee/list" resulted in 200 (OK)   

我不希望这些调试消息在我的控制台。如何禁用这些?也可以考虑将这些消息路由到另一个日志文件。

回答

0

看起来你正在使用Logback。它具有高度的可配置性,可以只记录特定级别的消息(只有警告或只有错误),并且可以登录到控制台(默认为文件,...)。你应该阅读logback manual但这里有一些线索

的logback从文件logback.xml在类路径

的根。如果你想停止调试消息记录读取它的配置(下一层是信息,然后警告,错误和关闭)

<configuration debug="true"> 

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
    <!-- encoders are by default assigned the type 
     ch.qos.logback.classic.encoder.PatternLayoutEncoder --> 
    <encoder> 
     <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> 
    </encoder> 
    </appender> 

    <root level="info"> 
    <appender-ref ref="STDOUT" /> 
    </root> 
</configuration> 

如果你想记录到一个文件:

<configuration> 

    <appender name="FILE" class="ch.qos.logback.core.FileAppender"> 
    <file>testFile.log</file> 
    <append>true</append> 
    <!-- encoders are assigned the type 
     ch.qos.logback.classic.encoder.PatternLayoutEncoder by default --> 
    <encoder> 
     <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> 
    </encoder> 
    </appender> 

    <root level="DEBUG"> 
    <appender-ref ref="FILE" /> 
    </root> 
</configuration> 
+0

我试过这两个变种,但它的功效。另外我的问题是我的服务器日志中有一些与logback相关的错误。 2014-09-26 10:04:16,739错误[线程2] STDERR(AbstractLoggingWriter.java:71) - SLF4J:类路径包含多个SLF4J绑定。 即使在更改logback.xml文件后,它是否与控制台中的日志有任何关系? – JavaWorld 2014-11-02 05:10:46

+0

我不知道它是否相关,但是您应该对您的日志记录系统做出决定(slf4j + logback是一个很好的选择,但是必须正确配置其他选项),并在调整日志级别之前修复此错误。顺便说一句,你把'logback.xml'放在哪里? – 2014-11-02 09:46:39

+0

我已将logback.xml保存在src/main/resources文件夹中。我可以看到文件testFile.log已经创建,但里面没有内容。日志仍然在控制台中。 – JavaWorld 2014-11-03 05:38:35

0

基于Java的配置instea d的xml为我工作。

FileAppender<ILoggingEvent> myAppender = new FileAppender<ILoggingEvent>(); 
LoggerContext loggerContext=(LoggerContext)LoggerFactory.getILoggerFactory(); 
loggerContext.reset(); 

PatternLayoutEncoder layout=new PatternLayoutEncoder(); 
layout.setContext(loggerContext); 
layout.setPattern("%X{first} %X{last} - %m%n"); 
layout.start(); 
myAppender.setAppend(true); 
    myAppender.setFile("logs/testFile1.log"); 
    myAppender.setName("File1"); 
    myAppender.setEncoder(layout); 
    myAppender.setContext(loggerContext); 
    myAppender.start(); 
    ch.qos.logback.classic.Logger logbackLogger = loggerContext.getLogger("Main"); 
    logbackLogger.addAppender(myAppender); 
    logbackLogger.setLevel(Level.DEBUG); 
    logbackLogger.setAdditive(true);