2012-03-26 2 views
4

우리는 현재 프로젝트에서 log4j + commons-logging을 사용하고 있습니다. 이제 우리는 log4j에서 Logback으로 옮겨 가고 있습니다. 따라서 log4j.properties를 logback.xml로 대체하거나 log4j를 SLF4J로 변환해야합니까? log4j에서 로그백 (마이그레이션)

이 제안에 따라 제가

코드 현제
import org.apache.log4j.Level; 
import org.apache.log4j.Logger; 
import org.apache.log4j.Priority; 

public class LoggerUtil 
{ 
    // logger 
    static Logger logger; 

    // applications 

    public static String APP_AccInqSERVICE = "AccInqApp"; 

추천 코드는 commonutils에 LoggerUtils.java의 일부가 동일한 코드를 유지했다. 이

LoggerUtil.info(LoggerUtil.APP_ACCT_INQ, AccountInqService.class, 
       "searchAccountSnapshot", "method starts...."); 

같은 loggings에 대한 사용 LoggerUtils 내가 그것을 그대로 LoggerUtils.java 코드를 유지하고 log4j에 대비 slf4.jar을 포함하고 잘 컴파일 지금에 log4j.jar를 제거하고 어디 지금 AccInqWeb 모듈이 서버에 commonutils 모듈을 배포하고 addDlogin.configurationFile = setDomainEnv.cmd 및 logback jar의 C : \ u001 \ isuser \ tesbea \ user_projects \ domains \ iservices 10 \ resources \ logback.xml에 클래스 경로에 logback jar를 추가합니다. 하지만 우리가 사용하는 로그를 얻지 못했습니다. WLS10.3.0은 설정과 관련이 있습니다.

+0

이었다 무엇 logback을 log4j에에서 web.xml 내에서 로깅 디렉토리를 변경해야처럼 보이는 파일입니다 'logback.xml' 파일에는 무엇이 있습니까? – madth3

+0

log4j.logger.com.webex.iservices.accinquiry = DEBUG, R, IntegratedServicesLog, stdout, mail log4j.properties LOGBACK.XML : - <펜더-REF REF = "R"/> <펜더-REF REF = "IntegratedServicesLog"/> <펜더-REF REF = "표준 출력"/> <펜더-REF REF = "메일"/> user1137387

답변

1

로그백은 log4j와 작동합니다.

logback-classic 모듈은 log4j의 상당히 향상된 버전과 동화 될 수 있습니다. 또한 logback-classic은 기본적으로 SLF4J API를 구현하므로 log4j 또는 java.util.logging (JUL)과 같은 다른 로깅 프레임 워크와 로그백 사이를 쉽게 전환 할 수 있습니다. logback website

프로젝트 또는

<dependency> 
    <groupId>ch.qos.logback</groupId> 
    <artifactId>logback-classic</artifactId> 
    <version>1.1.3</version> 
</dependency> 

당신이 당신의 자원 폴더에 logback.xml 추가됩니다 싶지 제일 먼저 logback로 전환하려면 POM에 jar 파일을 추가합니다. 그것은이

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 

    <property name="USER_HOME" value="C:\\logs\\analyzer" /> 

    <appender name="FILE-THREAD" class="ch.qos.logback.classic.sift.SiftingAppender"> 

     <!-- This is MDC value --> 
     <!-- We will assign a value to 'logFileName' via Java code --> 
     <discriminator> 
      <key>logFileName</key> 
      <defaultValue>head0</defaultValue> 
     </discriminator> 

     <sift> 

      <!-- A standard RollingFileAppender, the log file is based on 'logFileName' at runtime --> 
      <appender name="FILE-${logFileName}" 
      class="ch.qos.logback.core.rolling.RollingFileAppender"> 
      <file>${USER_HOME}/${logFileName}.log</file> 

      <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> 
       <Pattern> 
        %d{yyyy-MM-dd HH:mm:ss} %mdc [%thread] %level %logger{35} - %msg%n 
       </Pattern> 
      </encoder> 

      <rollingPolicy 
       class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> 
       <FileNamePattern>${USER_HOME}/${logFileName}.%i.log.zip 
       </FileNamePattern> 
       <MinIndex>1</MinIndex> 
       <MaxIndex>10</MaxIndex> 
      </rollingPolicy> 

      <triggeringPolicy 
       class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> 
       <MaxFileSize>10MB</MaxFileSize> 
      </triggeringPolicy> 

      </appender> 

     </sift> 
    </appender> 

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
     <layout class="ch.qos.logback.classic.PatternLayout"> 
      <Pattern> 
       %-5level %logger{36} - %msg%n 
      </Pattern> 
     </layout> 
    </appender> 

    <logger name="com.yourproject.analyzer.core" level="debug" 
     additivity="false"> 
     <appender-ref ref="FILE-THREAD" /> 
     <appender-ref ref="STDOUT" /> 
    </logger> 

    <root level="error"> 
     <appender-ref ref="STDOUT" /> 
    </root> 

</configuration> 

그런 다음 당신은 당신의`log4j.properties`에

<context-param> 
    <param-name>loggingName</param-name> 
    <param-value>logbackdirectory</param-value> 
<context-param> 

logback manual

관련 문제