2013-04-06 63 views
3

我想從Spring MVC中的控制器登錄,但沒有出現。我正在使用帶有logback的SLF4J。我設法從主類中登錄,但是在將其設置爲Web應用程序後,它不記錄。如何從Spring MVC登錄

我認爲它會工作,因爲SL4JF和Logback在類路徑中。

@Controller 
@RequestMapping(value = "/cars") 
public class CarController { 

    private Logger logger = LoggerFactory.getLogger(CarController.class); 

    @RequestMapping(method = RequestMethod.GET) 
    @ResponseBody 
    public Map<String, String> newCar() { 
     logger.info("new car"); 
     // more code 
     return map; 
    } 
} 

logback.xml

<configuration scan="true"> 
    <property name="LOG_DIR" value="/My/User/Desktop"/> 

    <!--Loggers--> 
    <logger name="my.company" level="DEBUG"/> 

    <!--Root logger--> 
    <root level="debug"> 
     <appender-ref ref="STDOUT"/> 
     <appender-ref ref="FILE_ROLLER"/> 
    </root> 

    <!--Appenders--> 
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
     <encoder> 
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> 
     </encoder> 
    </appender> 

    <appender name="FILE_ROLLER" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
     <file>${LOG_DIR}/mylog.log</file> 
     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
      <fileNamePattern>mylog.%d{yyyy-mm-dd}.log</fileNamePattern> 
      <maxHistory>30</maxHistory> 
     </rollingPolicy> 

     <encoder> 
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> 
     </encoder> 
    </appender> 
</configuration> 
+0

你能分享從那裏記錄不工作代碼和logback.xml文件? – craftand 2013-04-06 22:31:45

+0

@craftand是的,我已更新。 – LuckyLuke 2013-04-06 22:47:33

+0

@LuckyLuke - 你在這裏使用的web.xml配置是什麼?顯然spring沒有logback的配置監聽器 – kapad 2015-07-12 20:17:09

回答

5

這是因爲春季是用Java共享默認日誌記錄。您應該將jcl-over-slf4j庫放入您的類路徑中,以便Spring使用SLF4J進行日誌記錄。

與Maven,使用除了這些依賴於SLF4J +的logback:

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-context</artifactId> 
    <version>${spring.version}</version> 
    <exclusions> 
     <!-- Exclude Commons Logging in favor of SLF4j --> 
     <exclusion> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>jcl-over-slf4j</artifactId> 
    <version>${slf4j.version}</version> 
    <scope>runtime</scope> 
</dependency> 

希望這有助於:)

+0

我今天晚些時候會試試,謝謝:) – LuckyLuke 2013-04-08 10:24:51

+0

我無法讓它工作。 – LuckyLuke 2013-04-10 16:29:50

+0

嘗試在您的logback.xml中放入以查看正在做什麼logback。你有沒有嘗試過logger.error()? – jelies 2013-04-10 22:19:21