web-dev-qa-db-ja.com

Spring Boot:application.propertiesでロギングレベルを設定する方法を教えてください。

これは非常に単純な質問ですが、情報が見つかりません。
(たぶん私のJavaフレームワークに関する私の知識は非常に欠けています)

Application.propertiesでロギングレベルを設定する方法を教えてください。
ログファイルの場所など

237
zeodtr

更新: Spring Boot v1.2.0以降では、application.propertiesまたはapplication.ymlの設定が適用されます。リファレンスガイドの ログレベルのセクション を参照してください。

logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR

以前のバージョンのSpring Bootではできません。そのためには、ロギングフレームワークに通常の設定(log4j、logback)を使用するだけです。適切な設定ファイル(log4j.xmlまたはlogback.xml)をsrc/main/resourcesディレクトリに追加して、好みに合わせて設定します。

コマンドラインからアプリケーションを起動するときに--debugを指定すると、デバッグログを有効にできます。

Spring Bootは、logbackのための素晴らしい出発点でもあり、デフォルトを設定したり、 base.xml ファイルを色付けするなどして、logback.xmlファイルに含めることができます。 (これはSpring Bootのデフォルトの logback.xml からもお勧めです。

<include resource="org/springframework/boot/logging/logback/base.xml"/>     
269
M. Deinum

あなたはあなたのapplication.propertiesを使ってそれをすることができます。

logging.level.=ERROR - >ルートログレベルをerrorに設定します
...
logging.level.=DEBUG - >ルートログレベルをDEBUGに設定します

logging.file=${Java.io.tmpdir}/myapp.log - >絶対ログファイルパスをTMPDIR/myapp.logに設定します。

プロファイルを使用したロギングに関する適切なデフォルトのapplication.propertiesのセットは、次のとおりです。application.properties:

spring.application.name=<your app name here>
logging.level.=ERROR
logging.file=${Java.io.tmpdir}/${spring.application.name}.log

application-dev.properties:

logging.level.=DEBUG
logging.file=

お気に入りのIDE内で開発するときは、アプリの実行/デバッグ構成にVM引数として-Dspring.profiles.active=devを追加するだけです。

これにより、エラーを本番環境でログに記録したり、開発中にデバッグログをログファイルに出力せずにデバッグしたりできます。これにより開発中のパフォーマンスが向上します(そしてSSDドライブを数時間の運用で節約できます)。

92
Richard

root ロギングレベルを設定する適切な方法は、プロパティlogging.level.rootを使用することです。この質問が最初に尋ねられてから更新された documentation を参照してください。

例:

logging.level.root=WARN

アプリケーションのパッケージ名がcom.company.myprojectであるとします。次に、application.propertiesファイルで以下のようにプロジェクト内のクラスのログレベルを設定できます。

logging.level.com.company.myproject = DEBUG

logging.level.org.springframework.web = DEBUGおよびlogging.level.org.hibernate = DEBUGは、SpringフレームワークWebおよびHibernateのクラスに対してのみロギングレベルを設定します。

ログファイルの場所を設定するには

logging.file = /home/ubuntu/myproject.log

13
shaunthomas999

Application.propertiesにdebug=trueを追加すると実際にデバッグログが有効になるため、Dave Syerのヒントを参考にしてください。

10
oravecz

Spring Bootを使用している場合は、直接 application.properties ファイルに次のプロパティを追加して、ログレベルを設定し、ログパターンをカスタマイズし、外部ファイルにログを保存できます。

これらは異なるロギングレベルと最小から最大までの順序です。

OFF <<致命的<<エラー<<警告<<情報<< DEBUG << TRACE << ALL

# To set logs level as per your need.
logging.level.org.springframework = debug
logging.level.tech.hardik = trace

# To store logs to external file
# Here use strictly forward "/" slash for both Windows, Linux or any other os, otherwise, its won't work.      
logging.file=D:/spring_app_log_file.log

# To customize logging pattern.
logging.pattern.file= "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"

ログをより鮮やかにカスタマイズするには、このリンクを通過してください。

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html

9
Hardik Patel

たとえばlog4jなど、別のロギングフレームワークを使用する場合は、Spring Boots自身のロギングを無効にして独自のものを実装するのが最も簡単な方法です。このようにして、すべてのログレベルを1つのファイル、log4j.xml(私の場合)内に構成できます。

これを達成するためには、単にあなたのpom.xmlにそれらの行を追加する必要があります。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j</artifactId>
</dependency>

あなたはおそらく最初の依存関係をすでに持っていて、他の2つだけを必要としています。この例はlog4jのみをカバーしていることに注意してください。
以上で、log4j設定ファイル内でブート用のロギングを設定する準備が整いました。

8
atripes

レコードの場合: 公式ドキュメント 、Spring Boot v1.2.0.RELEASEおよびSpring v4.1.3.RELEASEの場合:

ロギングに対して行う必要がある唯一の変更がさまざまなロガーのレベルを設定することであれば、 "logging.level"接頭辞を使用してapplication.propertiesでそれを行うことができます。

logging.level.org.springframework.web: DEBUGlogging.level.org.hibernate: ERROR

"logging.file"を使って(コンソールに加えて)ログを記録するファイルの場所を設定することもできます。

ロギングシステムのよりきめ細かい設定を構成するには、問題のLoggingSystemによってサポートされているネイティブの構成フォーマットを使用する必要があります。デフォルトでは、Spring Bootはシステムのデフォルトの場所からネイティブ設定を取得します(たとえば、logbackの場合はclasspath:logback.xml)が、 "logging.config"プロパティを使用して設定ファイルの場所を設定できます。

3
Eric Platon

さらに詳細を設定したい場合は、ログ設定ファイル名 "logback.xml"または "logback-spring.xml"を追加してください。

application.propertiesファイルに次のように入力します。

logging.config: classpath:logback-spring.xml

loback-spring.xmlに次のように入力します。

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <include resource="org/springframework/boot/logging/logback/base.xml"/>

        <appender name="ROOT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">

            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>INFO</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>

            <file>sys.log</file>

            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">


                <fileNamePattern>${LOG_DIR}/${SYSTEM_NAME}/system.%d{yyyy-MM-dd}.%i.log</fileNamePattern>

                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>500MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>

            <encoder>
                <pattern>%-20(%d{yyy-MM-dd HH:mm:ss.SSS} [%X{requestId}]) %-5level - %logger{80} - %msg%n
                </pattern>
            </encoder>
        </appender>


        <appender name="BUSINESS_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>TRACE</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>

            <file>business.log</file>

            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

                <fileNamePattern>${LOG_DIR}/${SYSTEM_NAME}/business.%d{yyyy-MM-dd}.%i.log</fileNamePattern>

                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>500MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>

            <encoder>
                <pattern>%-20(%d{yyy-MM-dd HH:mm:ss.SSS} [%X{requestId}]) %-5level - %logger{80} - %msg%n
                </pattern>
            </encoder>
        </appender>


        <logger name="{project-package-name}" level="TRACE">
            <appender-ref ref="BUSINESS_APPENDER" />
        </logger>

        <root level="INFO">
            <appender-ref ref="ROOT_APPENDER" />
        </root>

    </configuration>
1
Sheldon Papa

Eclipse IDEであなたのプロジェクトがうまく動いていない場合は、変更を反映するようにプロジェクトをきれいにして構築することを忘れないでください。

1

既存の答えは素晴らしいです。ログをグループ化し、グループ全体のログレベルを設定できる新しいスプリングブート機能をご紹介します。

ドキュメントの例:

  • ロギンググループを作成する
logging.group.Tomcat=org.Apache.catalina, org.Apache.coyote, org.Apache.Tomcat
  • グループのログレベルを設定する
logging.level.Tomcat=TRACE

これは、柔軟性を高める素晴らしい機能です。

1
Martin Choraine

spring Bootプロジェクトではlogging.level.root = WARNと書くことができますが、ここで問題は、devtools依存関係を追加しても再起動する必要がある、プロパティファイルで値を変更した場合自動検出できないことです。解決策i、e pom.xmlにアクチュエータを追加し、URLバーのpostmanクライアントに表示される下のようにロガーレベルを渡すことができます http:// localhost:8080/loggers/ROOT または http: // localhost:8080/loggers/ そして本文には、以下のようにjson形式を渡すことができます。

{
  "configuredLevel":null
   effectiveLevel":"WARN"

}
0