web-dev-qa-db-ja.com

Springログを無効にして、読み取り可能なログを作成する

Springログを無効にして、簡単に読み取れるログ出力を取得したり、他の人が読み取れるようにする方法はありますか。 Spring Beanの読み込みログを無効にする方法 での同様の質問への回答は、org.springframeworksubstring in log4j.propertiesfile。私の場合、そのような行はありません。

ここは log4j.properties

# Define the root logger with appender file
log4j.rootLogger = DEBUG, stdout

# Define the file appender
log4j.appender.stdout=org.Apache.log4j.ConsoleAppender
# Set the name of the logs destination
log4j.appender.stdout.target=System.out

# Set the immediate flush to true (default)
log4j.appender.stdout.ImmediateFlush=true

# Set the threshold to debug mode
log4j.appender.stdout.Threshold=debug

# Set the append to false, overwrite
log4j.appender.stdout.Append=false

# Define the layout for appender
log4j.appender.stdout.layout=org.Apache.log4j.PatternLayout
log4j.appender.stdout.layout.conversionPattern=%d{yyyy-MM-dd}:%m%n 
18
LeandreM

明示的に指定されていないすべてのデフォルトのロギングは[〜#〜] debug [〜#〜]です。したがって、すべてがそのレベルでログに記録され(構成から判断して)、基本的にはログがあふれています。 org.springframeworkのロガーを削除せずに追加し、別のレベルを設定する必要があります。

log4j.logger.org.springframework=INFO 

またはあなたが好きなログレベルレベル。

31
M. Deinum

実行する前に、次の知識が必要です。

1.How to add maven dependency 
2.Where to put log4j configuration file

OK、質問に戻ります。一番の答えは、スプリング4.xでは機能しません。、spring4.xを使用している場合は、次の3つの手順を試してください。

  1. common-loggingからspring-coreを削除します

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>4.3.4.RELEASE</version>
        <exclusions>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    

    このステップがなければ、log4j構成ファイルに何を入れても機能していませんが、springはcommon-logging my boyを使用しています。
    PS:多くのスプリングモジュールでは、spring-corecommons-loggingに明示的に依存する唯一のモジュールです。

  2. SLF4Jとlog4jを追加します

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.5.8</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.5.8</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.5.8</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.14</version>
    </dependency>
    
  3. log4j.propertiesを構成します(xmlファイルを使用することもできます)

    log4j.rootCategory = INFO、stdout

    log4j.appender.stdout = org.Apache.log4j.ConsoleAppender log4j.appender.stdout.layout = org.Apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern =%d {ABSOLUTE}%5p%t%c { 2}:%L-%m%n

    log4j.category.org.springframework.beans.factory = INFO

迷惑な春のデバッグログはなくなりました。コーディングをお楽しみください!

答えはspring.io docからです。Originの場合は here

9
Ajax

すべての回答では、log4j.propertiesでの構成の例を示しました。私は同じ問題を抱えていましたが、log4j2.xmlで構成を使用していましたが、ここでの答えは解決策につながります。

誰かが私と同じ船に乗っている場合に備えて、次のようにしました。次のサンプルに示すように、org.springframeworkという名前とレベルWARNという名前のノードロガーを追加しました。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Logger name="org.springframework" level="WARN"/>
        <Root level="info">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

私はSpring Bootを使用していますが、次のスニペットに示すように、作成する除外はlogback-classicです。

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <exclusions>
            <exclusion>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
4
Vlad G.

次の例に示すように、必要なパッケージ名を指定できます。

log4j.logger.com.foo=WARN

コンソールでは、WARN、ERROR、FATALのログのみが表示されるようになりました。

3
Hemanth

私もこの同じ問題に直面していました。 log4jを構成した後でも、Springframeworkのログは削除されませんでした。次に、ロギングがcommons-loggingに依存していることがわかりました。

Webアプリのpom.xmlファイルの依存関係からcommons-loggingを無効にする必要があります。

commons-loggingをpom.xmlから削除した後でも、EclipseまたはSTS IDEで利用可能な依存関係階層を確認してください。これは、他の依存関係管理が何らかの理由で追加されているかどうかを知るのに役立ちますが、これは私たちが知らないかもしれません。

依存関係を削除したら、log4j.logger.org.springframework=ERRORをlog4j構成に追加するだけです。これは役立ちます。

1
SachinSarawgi