2013-04-06 4 views
3

Я пытаюсь войти с контроллера в Spring MVC, но ничего не отображается. Я использую SLF4J с записью. Мне удалось войти в основной класс, но после создания веб-приложения он не регистрируется.Как зарегистрироваться в 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

+0

@craftand Да, я обновил. – LuckyLuke

+0

@LuckyLuke - Что такое web.xml-конфигурационное устройство, которое вы использовали здесь? Видимо, у весны нет слушателя конфигурации для logback – kapad

ответ

5

Это происходит потому, что Spring использует Java Commons Logging по умолчанию. Вы должны положить библиотеку jcl-over-slf4j в свой путь к классам, чтобы Spring использовал SLF4J для ведения журнала.

С мавена, использовать эту зависимость в дополнении к 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

+0

Я не могу заставить его работать. – LuckyLuke

+0

Попробуйте добавить в свой файл logback.xml, чтобы узнать, что делает журнал. Вы пытались использовать logger.error()? – jelies

Смежные вопросы