2013-04-06 36 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