2010-01-02 4 views
2

방금 ​​SpringMVC 및 로그백을 탐색하기 시작했습니다. 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()); 
    } 
} 

내가 FixedWindowRollingPolicy의 파일에 로그인 할 수 logback 설정을 가지고는 구성

<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> 

문제, 지금이 사이트에 액세스하는 동안 어떤 항목이 로그 파일에 작성되지 않은 것입니다입니다 브라우저에서. 컨트롤러가 호출되어 브라우저에 표시되는 뷰를 반환한다고 가정하므로 뷰가 표시되기 전에 로그 메서드를 호출해야합니다. 그러나 아무 일도 일어나지 않습니다. 테스트를 실행할 때 예상대로

그러나, 로깅이 작동하고 난 "인덱스 뷰를 반환"에 대한 로그 파일에서 특정 항목이있다.

어떤 도움이나 위의 상황에 관한 지침

높게 평가된다.

편집 : 현재 Apache에서 Tomcat6을 사용 중입니다.

logback 구성 파일, logback.xml은 SRC (기본 패키지) 바로 아래에 배치됩니다. 배포 후 점검 했으므로 WEB-INF/classes/

에 복사됩니다.
+0

컨트롤러를 실행중인 컨테이너는 무엇입니까? – skaffman

+0

로그백 구성 파일은 어디에 두시겠습니까? – axtavt

+0

Tomcat6을 Apache와 함께 사용하고 있습니다. 정보를 추가하기 위해 편집 된 질문 – Sujoy

답변

0

이상하게 들리 겠지만, appender.File 속성에 절대 경로를 사용하면 이상한 로그가 나타납니다. 예를 들어 위의와

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

, 내 로그가 그냥 기대 얻을.

왜 이런 일이 발생하는지 잘 모르겠습니다. 특히 이후 로그 테스트를 잘 작동합니다.

0

톰캣 인스턴스를 로그 파일이 지정된 곳에서 쓸 수있는 권한이 실행하는 사용자를합니까?

+0

네 허락이이 문제가 아니라, 테스트 넷빈즈를 실행에 프로젝트 디렉토리 바로 아래있는 logfile.log를 생성하는 것 같지만 바람둥이가 로그인에 실패 권한 문제가 생기지 만, 프로젝트 디렉토리의 절대 경로를 제공하면 tomcat과 테스트가 모두 동일한 logFile에 아무 문제없이 기록됩니다. – Sujoy