2011-04-14 8 views
1

봄 3.0 웹 앱. ... Log4j - 자신의 로그 파일에 쓰기 어려움

log4j.rootLogger=DEBUG, A1 
log4j.appender.A1=org.apache.log4j.FileAppender 
log4j.appender.A1.layout=org.apache.log4j.PatternLayout 
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n 
log4j.appender.A1.File=C:\\Testing.log 

로거를 통해 양식에서 항목을 기록 양식 컨트롤러가 .... 다음 Log4j의 속성은 WAR 파일의/WEB-INF/classes 디렉토리에 파일을 배치 한

@Controller 
@RequestMapping("/FlowPartOne") 
public class FlowPartOneFormController { 

    private final Logger logger = Logger.getLogger(this.getClass()); 

    @RequestMapping(method=RequestMethod.POST) 
    public String processForm(@ModelAttribute("pageOneData") PageOneData pageOneData) { 
     logger.info("Page One, Line One>" + pageOneData.getDataLineOne() + "<"); 
     logger.info("Page One, Line Two>" + pageOneData.getDataLineTwo() + "<"); 
     return "FlowPartOne"; 
    } 

} 

응용 프로그램은

응용 프로그램이 실행, 로그 출력이 나타납니다 글래스 피시 (3)에서 실행되지만, 글래스 피쉬 로그 디렉토리의 ... \ 글래스 피쉬 \ 도메인 \ 로그 \ server.log에.

C : 드라이브에 로그 파일을 만들었지 만 사용하지 않습니다.

Log4J에 조금 익숙하지 만, 내가 뭘 잘못하고 있니 ???

+0

whats 속성 파일의 이름 –

답변

1

Glassfish가 응용 프로그램 시작 전에 클래스 로더에 의해로드가 실행되면 log4j 자체를 사용하는 경우 응용 프로그램 서버 로그 파일을 가리 키므로 구성 파일이 전혀로드되지 않습니다. 당신이 당신의 자신의 개인 사본이 앱의 클래스 로더에로드받을 수 있도록

당신이, 당신의 설정을 선택해야 애플리케이션 서버에 로컬 클래스 로더 클래스로드하기 때문에 우선합니다 당신의/WEB-INF/lib 디렉토리에 log4j.jar를 포함하도록 시도 할 수 부모 (앱 서버) 이상.

하지만 앱 서버의 클래스 로딩에 따라 달라질 수 있습니다. 클래스 로더 격리를 활성화하는 것과 같은 추가 단계가 필요한 JBoss에서 작업했습니다.