これは非常に単純な質問ですが、情報が見つかりません。
(たぶん私のJavaフレームワークに関する私の知識は非常に欠けています)
Application.propertiesでロギングレベルを設定する方法を教えてください。
ログファイルの場所など
更新: 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"/>
あなたはあなたの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ドライブを数時間の運用で節約できます)。
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
Application.propertiesにdebug=true
を追加すると実際にデバッグログが有効になるため、Dave Syerのヒントを参考にしてください。
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
たとえば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設定ファイル内でブート用のロギングを設定する準備が整いました。
レコードの場合: 公式ドキュメント 、Spring Boot v1.2.0.RELEASEおよびSpring v4.1.3.RELEASEの場合:
ロギングに対して行う必要がある唯一の変更がさまざまなロガーのレベルを設定することであれば、 "logging.level"接頭辞を使用してapplication.propertiesでそれを行うことができます。
logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR
"logging.file"を使って(コンソールに加えて)ログを記録するファイルの場所を設定することもできます。
ロギングシステムのよりきめ細かい設定を構成するには、問題のLoggingSystemによってサポートされているネイティブの構成フォーマットを使用する必要があります。デフォルトでは、Spring Bootはシステムのデフォルトの場所からネイティブ設定を取得します(たとえば、logbackの場合はclasspath:logback.xml)が、 "logging.config"プロパティを使用して設定ファイルの場所を設定できます。
さらに詳細を設定したい場合は、ログ設定ファイル名 "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>
Eclipse IDEであなたのプロジェクトがうまく動いていない場合は、変更を反映するようにプロジェクトをきれいにして構築することを忘れないでください。
既存の答えは素晴らしいです。ログをグループ化し、グループ全体のログレベルを設定できる新しいスプリングブート機能をご紹介します。
ドキュメントの例:
logging.group.Tomcat=org.Apache.catalina, org.Apache.coyote, org.Apache.Tomcat
logging.level.Tomcat=TRACE
これは、柔軟性を高める素晴らしい機能です。
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"
}