2017-01-24 10 views
0

저는 log4j를 처음 사용합니다. 나는 log4j 1.2에서 log4j2로 응용 프로그램을 변환하고있다. log4j.properties 파일에서 다음과 같은 구성을 발견했습니다.log4j 1.2 구성을 log4j 2 구성으로 변환하십시오.

############################################################# 
#  Default Logging Configuration File 
############################################################ 

############################################################ 
#  Global properties 
############################################################ 
handlers= java.util.logging.ConsoleHandler 
.level= WARNING 
############################################################ 
# Handler specific properties. 
# Describes specific configuration info for Handlers. 
############################################################ 

# default file output is in user's home directory. 
java.util.logging.FileHandler.pattern = %h/java%u.log 
java.util.logging.FileHandler.limit = 50000 
java.util.logging.FileHandler.count = 1 
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter 

# Limit the message that are printed on the console to INFO and above. 
java.util.logging.ConsoleHandler.level = INFO 
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter 

############################################################ 
# Facility specific properties. 
# Provides extra control for each logger. 
############################################################ 

# For example, set the com.xyz.foo logger to only log SEVERE 
# messages: 
com.xyz.foo.level = SEVERE 

어떻게이 구성을 log4j2 구성으로 변환 할 수 있습니까?

감사합니다.

+1

[this] (https://logging.apache.org/log4j/2.x/manual/migration.html)을 읽으셨습니까? –

+0

예이 가이드를 읽었지만 변환 할 수 없었습니다. –

+0

어떤 부분에서 실패하게됩니까? 내가 기억할 것은, 어떤 종류의 변환기 도구도 있어야한다는 것입니다 ... 아, 아뇨. 그것은 로그백이었다. – Fildor

답변

0

Log4j2는 log4j-1.2-api 모듈에 (실험적으로) 변환 도구가 있습니다.

클래스는 org.apache.log4j.config.Log4j1ConfigurationConverter입니다. log4j-1.2-api 모듈 외에도 classpath에는 JCommander (http://jcommander.org)가 필요합니다.


당신은 콘솔과 파일 펜더와 예 Log4j2 구성을 찾고 있다면,이 시도 :

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="INFO"> 
    <Appenders> 
     <Console name="Console" target="SYSTEM_OUT"> 
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> 
     </Console> 
     <File name="MyFile" fileName="all.log" append="false"> 
      <!-- alternatively use XmlLayout (requires Jackson, see documentation for dependencies) --> 
      <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> 
     </File> 
    </Appenders> 
    <Loggers> 
     <Logger name="com.xyz.foo" level="warn" /> 
     <Root level="trace"> 
      <AppenderRef ref="Console" level="info" /> 
      <AppenderRef ref="MyFile"/> 
     </Root> 
    </Loggers> 
</Configuration> 

저장이 log4j2.xml라는 이름의 파일과의 클래스 경로에 넣어 당신의 신청.

+0

오류 발생 NoSuchMethodError : com.beust.jcommander.JCommander.setCaseSensitiveOptions (Z) V. 또한 log4j2에서 위의 구성과 동일한 구문을 찾을 수 없습니다. –

+0

JCommander 1.48 이상이 필요합니다. –

+0

지금은 클래스를 실행할 수 있지만 출력 결과는 다음과 같습니다. OK = 0, Failures = 0, Total = 0 (java org.apache.log4j.config.Log4j1ConfigurationConverter --recurse/home/myProject --in/home/myProject/logging .properties --verbose -o aaaaa.txt). 출력 파일이 생성되지 않습니다. 또한 코드베이스 (https://fossies.org/linux/misc/apache-log4j-2.7-src.tar.gz/apache-log4j-2.7-src/log4j-1.2-api/src/main/java/org)에서 /apache/log4j/config/Log4j1ConfigurationParser.java)이 도구가 java.util.logging 관련 구성을 변환하지 않는다고 생각합니다. –