2011-06-14 6 views
3

우리 Webapp에서는 java.util.Logging (JULI, Tomcat 6에 배포했기 때문에 실제로)을 사용하고 있습니다. 로깅은 WEB-INF/classes, a la this의 logging.properties 파일로 구성됩니다.Spring에서 autowired가되도록 java.util.Logging을 구성하는 방법은 무엇입니까?

나는 그것이 무엇인가, autowire가 될 수 있도록 로거를 구성하고 싶습니다 :

@Autowired 
private Logger mylogger; 

나는 봄 포럼, 웹을 검색 한, 물론 스택 오버플로의 나는 찾을 수 없습니다 이걸 어떻게 세우는거야. 나는 이것에 대한 도움을 주시면 고맙겠습니다.

감사합니다.

답변

3

한 가지 방법은 Java Config style을 사용하는 것입니다 :

내가 원하는대로의 방향으로 당신을 가리 킵니다 어쩌면 @Logger 주석이 도입되는 하나의 참조를 발견

@Configuration 
public class LoggerProvider { 
    @Bean 
    public Logger logger() { 
     return Logger.getLogger("foobar.whatever"); 
    } 
} 

그런 다음 평소와 같이 나머지 응용 프로그램에 자동 실행될 수 있습니다.

+1

감사합니다. 간단하고 구현하기 쉽습니다. @Configuration을 사용하려면 cglib (cglib-nodep-2.2.jar를 사용했습니다)하지만 그게 유일한 어려움이었습니다. – Paul

+0

@Paul : 알아두면 좋을 것 같습니다. (어쨌든 내 애플 리케이션에서 복잡한 AOP를하고 있기 때문에 나는 cglib을 가지고있다.) –

2

무언가 (콩)에 @Autowired를 사용하려면 해당 콩을 스프링 제어해야합니다. 이를 수행하는 방법은 다양하며 사용하려는 로깅 프레임 워크에 따라 다릅니다.

'일회용 맞춤'솔루션이없는 것 같습니다.

일반적으로 원하는 로깅 프레임 워크에서 제공하는 정적 초기화 프로그램이나 일부 추상화 (예 : commons-logging)를 사용합니다. 당신이 좋겠 있도록

http://jgeeks.blogspot.com/2008/10/auto-injection-of-logger-into-spring.html

+0

감사하지만 난 그게 더 간단 허용 대답을 사용하여 발견 : 거기 당신은 구성에 다음 @Bean을 넣어해야합니다. 나는 기존의 @Autowired를 사용하는 것에 대한 자신 만의 주석을 만드는 데 이점을 보지 못했습니다. – Paul

0

Logger에 @Autowired을 주입 가능하게하려면 @Autowired을 사용하는 모든 Bean을 구성한 구성 클래스가 있어야합니다. 해당 클래스는 @Configuration으로 표시됩니다.

@Configuration 
public class WebConfiguration { 

    @Bean 
    @Scope("prototype") 
    public Logger produceLogger(InjectionPoint injectionPoint) { 
     Class<?> classOnWired = injectionPoint.getMember().getDeclaringClass(); 
     return LoggerFactory.getLogger(classOnWired); 
    } 
} 
관련 문제