2017-01-20 26 views
0

ログフレームワークをlog4jからlog4j2にアップグレードしています。私はapacheの人hereからステップを踏んだ。Spring-Bootプロジェクトlog4jからlog4j2への変換問題

  1. 私は私の春ブートパッケージャプロジェクトを再建し、新たな依存関係
  2. に私のGradleファイルをアップグレード(特にアペンダ用)新基準
  3. に私のlog4j.xmlを修正し、それを
を展開

私のjarファイルを展開するとき、私はこれらのシステムプロパティを使用しています:


javaのDspring.profiles.active = DEV -Dlog4j.configurationFile = log4j2.xml -jar application.jarに


しかし、私のアプリケーションは、log4jのではなくlog4j2を実行し続けます。デバッグプロパティを設定するとDlog4j.debug私はlog4jのは、XMLなど、プロパティを見つけようとしている参照して、どこかに私はバージョン1.2を拾っていますので、

No appenders could be found for logger. See http://logging.apache.org/log4j/1.2/faq.

を言うことができますか?

私はlog4j2が実行されていると考えている唯一の理由は、私がのlog4j.xmlにlog4j2.xmlの名前を変更したときに、私はlog4jのはそれと一緒にメッセージを吐き出していても log4j2.xml could not be found. Only displying error messages to the console.を述べlog4jの警告が表示されますです。

log4jとlog4j2から切り替えるときに誰かが似たようなことに遭遇し、何か助けになるかもしれませんか?

+0

方法のGradleであなたの依存関係は次のようになり? Log4j2用のスターターが1つあります( 'spring-boot-starter-log4j2')。これは' spring-boot-starter-logging'も除外しなければならない可能性があります。 –

+0

はい、私は 'spring-boot-starter-log4j2'を持っており、' spring-boot-starter-logging'を除いています。 'org.apache.logging.log4j log4j-api' – DevelopingDeveloper

答えて

2

これは、Gradle 3.2.1およびSpring Boot 1.4.2用です。あなたはどちらの

  • (私はあなたがすでにあることやったと思う)spring-boot-starter-log4j2をインポートし、log4j.xmllog4j2.xmlに名前を変更し、それに応じて変更spring-boot-starter-logging
  • を除外しなければならない/コピー

    1. src/main/resources内部log4j2.xmlファイルを含めるかによって、それを参照してください。 -Dlogging.configを使用してください(これはSpringブートアプリケーションのため、log4j.configurationFileは使用していません)

    最後に、あなたのG radle設定ファイルは(抜粋)のようになります。

    buildscript { 
        repositories { 
        mavenLocal() 
        } 
    
        dependencies { 
        classpath('io.spring.gradle:dependency-management-plugin:0.6.0.RELEASE') 
        classpath('org.springframework.boot:spring-boot-gradle-plugin:1.4.2.RELEASE') 
        } 
    } 
    
    plugins { 
        // ... 
    } 
    
    //apply from: 'gradle/database.gradle' 
    
    apply plugin: 'idea' 
    apply plugin: 'io.spring.dependency-management' 
    apply plugin: 'java' 
    apply plugin: 'org.springframework.boot' 
    
    repositories { 
        mavenCentral() 
        jcenter() 
    } 
    
    configurations { 
        all*.exclude module: 'spring-boot-starter-logging' 
        //all*.exclude module: 'jboss-logging-annotations' 
        //all*.exclude module: 'jboss-logging' 
    } 
    
    dependencyManagement { 
        imports { 
        mavenBom("org.springframework.boot:spring-boot-dependencies:1.4.2.RELEASE") 
        } 
    } 
    
    dependencies { 
        compile 'com.lmax:disruptor:3.3.5' 
        compile 'org.springframework.boot:spring-boot-starter-actuator' 
        compile 'org.springframework.boot:spring-boot-starter-log4j2' 
        compile 'org.springframework.boot:spring-boot-starter-undertow' 
        compile 'org.springframework:spring-webmvc' 
    } 
    
    task wrapper(type: Wrapper) { 
        gradleVersion '3.2.1' 
    } 
    

    ...あなたのLog4jの2.xの設定ファイルには、(次のようになります。これが唯一のコンソールにログインするアペンダとDEBUGレベルのみが「活性化されてい"この名前空間/パッケージの場合:

    <?xml version="1.0" encoding="UTF-8"?> 
    <Configuration> 
        <Properties> 
        <Property name="log-pattern">%d{MM-dd-yyyy HH:mm:ss.SSS} |- %highlight{%5p}{TRACE=blue, DEBUG=green, INFO=green, WARN=yellow, ERROR=red, FATAL=red} in %style{%C{1}:%L}{cyan} [%style{%t#${sys:PID}}{magenta}] - %m%n</Property> 
        </Properties> 
    
        <Appenders> 
        <Console name="Console" target="SYSTEM_OUT" follow="true"> 
         <PatternLayout pattern="${log-pattern}" /> 
        </Console> 
        </Appenders> 
    
        <!-- Logger levels: ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF --> 
        <Loggers> 
        <AsyncLogger name="io.shido" level="DEBUG" additivity="false" includeLocation="true"> 
         <AppenderRef ref="Console" /> 
        </AsyncLogger> 
    
        <Root level="WARN"> 
         <AppenderRef ref="Console" /> 
        </Root> 
        </Loggers> 
    </Configuration> 
    

    ...そしてあなたはそれがデフォルトで選んだ、またはあなたが別のものを指定する必要がある場合は、--logging.configディレクティブを使用しますのでsrc/main/resources内部log4j2.xmlファイルを持っていない場合:

    $ ./gradlew bootRun -Dspring.profiles.active=default -Dfile.encoding=UTF-8 -Dlogging.config assets/log4j2.xml 
    
  • +0

    私のlog4j2.xmlは' src/main/resources'コマンドを使用すると、 '-Dlogging.config = log4j2.xml'コマンドを実行すると' FileNotFoundExceptionから 'src/main/resources/log4j2.xml'の設定を使ってログシステムを初期化できませんでした。私は '-Dlogging.config'を使ってパスを明確にしようとしましたが、それでもファイルを見つけることができませんでした。 – DevelopingDeveloper

    +0

    log4jからの出力は' log4j:asdfasdfasf'か 'log4j2:asdfasdfasdf'でしょうか? – DevelopingDeveloper

    +0

    '-Dlogging.config'ディレクティブを' src/main/resources'の中に入れて、何が起きているのかを見てから '-Dlogging.config'ディレクティブを使って調整してみてください。 .config' –

    関連する問題