2010-01-02 4 views
2

Я только что начал изучать SpringMVC и logback.Регистрация с контроллера SpringMVC

Это мой контроллер (только один я до сих пор)

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.servlet.ModelAndView; 

@Controller 
public class IndexController { 

    protected final static Logger logger = LoggerFactory.getLogger(IndexController.class); 

    @RequestMapping("/index") 
    public ModelAndView index() { 
     logger.info("Returning index view"); 
     return new ModelAndView("index"); 
    } 
} 

и это тестовый код для выше.

import org.junit.Test; 

import static org.junit.Assert.assertNotNull; 
import static org.junit.Assert.assertEquals; 

import org.springframework.web.servlet.ModelAndView; 

public class IndexControllerTest { 

    @Test 
    public void index() throws Exception { 
     IndexController iController = new IndexController(); 
     ModelAndView modelAndView = iController.index(); 

     assertNotNull(modelAndView.getModel()); 
     assertEquals("index", modelAndView.getViewName()); 
    } 
} 

У меня есть Logback установки для входа в файл с FixedWindowRollingPolicy, конфигурация,

<configuration> 
    <appender name="FILE" 
       class="ch.qos.logback.core.rolling.RollingFileAppender"> 
     <File>logFile.log</File> 
     <RollingPolicy 
      class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> 
      <FileNamePattern>logFile.%i.log</FileNamePattern> 
      <MinIndex>1</MinIndex> 
      <MaxIndex>3</MaxIndex> 
     </RollingPolicy> 
     <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> 
      <MaxFileSize>5MB</MaxFileSize> 
     </triggeringPolicy> 
     <layout class="ch.qos.logback.classic.PatternLayout"> 
      <Pattern> 
       %-26(%d{HH:mm:ss,SSS} [%thread]) %-5level %logger{32} - %msg%n 
      </Pattern> 
     </layout> 
    </appender> 
    <root level="info"> 
     <appender-ref ref="FILE" /> 
    </root> 
</configuration> 

Проблема, у меня есть сейчас, является то, что запись не создается в лог-файл, а доступ к сайту из браузера. Я бы предположил, что контроллер вызван, который впоследствии возвращает представление, которое представлено в браузере, и, следовательно, метод журнала должен быть вызван до отображения представления. Но ничего не происходит.

Однако при запуске теста ведение журнала работает как ожидалось, и у меня есть конкретная запись в logFile для «возврата индексного представления».

Любые помощь или рекомендации относительно вышеуказанной ситуации очень ценятся.

EDIT: Использование tomcat6 с apache в данный момент.

Файл конфигурации журнала, logback.xml размещается непосредственно под src (по умолчанию). Как я проверил после развертывания, он копируется в WEB-INF/classes/

+0

В каком контейнере вы используете контроллер? – skaffman

+0

Где вы размещаете конфигурационный файл журнала? – axtavt

+0

Я использую tomcat6 вместе с apache. отредактированный вопрос, чтобы добавить информацию – Sujoy

ответ

0

Как ни странно, кажется, что я получаю журналы только отлично, когда я использую абсолютный путь для свойства appender.File!

<File>/home/sujoy/logFile.log</File> 

с вышесказанным, например, я получаю свои журналы только в ожидании.

Я понятия не имею, почему это происходит. В частности, поскольку при тестировании журнал работает нормально.

0

Имеет ли пользователь, выполняющий экземпляр Tomcat, разрешение на запись везде, где указан файл журнала?

+0

да разрешение не проблема, кажется, что при запуске теста netbeans создает logFile.log непосредственно под каталогом проекта, но tomcat не регистрируется там и возникает проблема с правами доступа, однако, если я предоставляю абсолютный путь к каталогу проекта, то как tomcat, так и тестовые журналы в том же logFile без каких-либо проблем. – Sujoy