Spring Boot プロジェクトはログ構成ファイルを指定します
Spring Boot プロジェクトでは、application.properties
またはファイルapplication.yml
にロギング構成ファイルを指定することでロギングを構成できます。
1.application.properties
ファイルを使用します。
ではapplication.properties
、次のプロパティを使用してログ プロファイルを指定できます。
logging.config=classpath:custom-logback.xml
上記の設定は、クラスパス上にあるファイルをcustom-logback.xml
ロギング設定ファイルとして使用するように Spring Boot に指示します。ファイル パスを独自のログ構成ファイルのパスに変更できます。
2.application.yml
ファイルを使用します。
ではapplication.yml
、次のプロパティを使用してログ プロファイルを指定できます。
logging:
config: classpath:custom-logback.xml
上記の設定と同様に、この設定は Spring Boot にクラスパス上にあるファイルをロギング設定ファイルとしてapplication.properties
使用するように指示します。custom-logback.xml
ログ構成ファイルがクラスパス上にあることを確認するか、必要に応じて正しいファイル パスを指定してください。
上記の構成を使用すると、Spring Boot プロジェクトでカスタム ロギング構成ファイルを指定して、デフォルトのロギング構成をオーバーライドできます。
logback-spring.xml と logback.xml の違い
オプション 1
Logback をログ フレームワークとして使用する場合、 これら 2 つは一般的に使用される構成ファイルですが、構成の読み込み方法と処理方法が若干異なりますlogback-spring.xml
。 logback.xml
-
ログバックスプリング.xml:
logback-spring.xml
これは、Spring Boot プロジェクト用に特別に用意された Logback 構成ファイルです。- Spring Boot を使用する場合、
logback-spring.xml
ファイルが存在する場合、Spring Boot は自動的にデフォルトの Logback 構成をロードして置き換えます。 logback-spring.xml
Spring のプロパティ プレースホルダーを使用した${}
動的構成など、Spring Boot の機能と拡張機能をサポートします。- Spring Boot がロードされる と、ログ レベルの自動構成 も 実行され、アプリケーション または アプリケーション
logback-spring.xml
の構成に従って ログ レベルが設定されます。application.properties
application.yml
logging.level.*
logback-spring.xml
ロード順序は よりも優先されますlogback.xml
。
-
ログバック.xml:
logback.xml
これは一般的な Logback 構成ファイルであり、Spring Boot 以外のプロジェクトや Spring Boot 機能を必要としないプロジェクトに適しています。- ファイルが存在する場合
logback.xml
、そのファイルは無視されてロードされて使用されますlogback-spring.xml
。 logback.xml
Spring のプロパティ プレースホルダーは Spring によって処理されないため、構成で使用できません。logback.xml
ログ レベルおよびその他の関連設定は手動で構成する必要があり、アプリケーションの他の構成ファイルによって自動的に影響を受けることはありません。
要約:
logback-spring.xml
Spring Boot プロジェクトを使用する場合は、 Spring Boot の自動構成およびプロパティ プレースホルダー機能を利用するために構成ファイルを使用することをお勧めします 。- Spring Boot 以外のプロジェクト、または Spring Boot 機能を必要としないプロジェクトの場合は、
logback.xml
構成ファイルを使用するだけです。
logback-spring.xml
または のどちらであってもlogback.xml
、その構成構文と要素は同じであり、特定のニーズに応じて構成できることに注意してください 。
オプション II
logback-spring.xml
と は logback.xml
、Logback ログ フレームワークを構成するために使用されるファイルであり、使用方法と読み込みメカニズムにいくつかの違いがあります。
logback-spring.xml
これは Spring Framework アプリケーション用の特定の Logback 構成ファイルであり、Spring との統合によりいくつかの追加機能が提供されます。ファイルが存在する場合 logback-spring.xml
、Spring Boot アプリケーションは最初にそれをロードします。この特定のファイル名は、Spring Boot の自動構成メカニズムを利用するためのもので、 Spring プロパティのプレースホルダーを使用してlogback-spring.xml
アプリケーション application.properties
または ファイルからロギングをapplication.yml
動的に構成できるようになります。これは、Spring のプロパティ設定を通じて実行時に Logback ロギングの動作を変更できることを意味します。
対照的に、logback.xml
これは、Spring 以外のアプリケーション、または Spring との統合を必要としないアプリケーションに使用される汎用 Logback 構成ファイルです。ファイルが存在しない場合、 logback-spring.xml
Logback はファイルのロードを試みます logback.xml
。このファイルは通常、スタンドアロン Java アプリケーションまたは非 Spring 環境の他のアプリケーションに使用されます。
Spring Boot フレームワークを使用している場合は、 logback-spring.xml
統合と動的構成機能を向上させるために、最初にファイルを使用して Logback を構成することをお勧めします。Spring Boot を使用していない場合、または Spring と統合する必要がない場合は、 を logback.xml
使用して Logback を構成できます。
Spring Boot プロジェクトのログ構成ファイルは、ログ入力ディレクトリを指定します。
Spring Boot プロジェクトで、ログ ファイルの出力ディレクトリを指定するには、次の方法を使用できます。
1.application.properties
構成ファイルを使用します。
ではapplication.properties
、次のプロパティを使用して、ログ ファイルの出力ディレクトリを指定できます。
logging.file.path=/path/to/logs
/path/to/logs
ログファイルを出力するディレクトリへのパスに置き換えます。
2.application.yml
構成ファイルを使用します。
ではapplication.yml
、次のプロパティを使用して、ログ ファイルの出力ディレクトリを指定できます。
logging:
file:
path: /path/to/logs
再度、/path/to/logs
ログ ファイルを出力するディレクトリへのパスに置き換えます。
アプリケーションがそのディレクトリにログ ファイルを作成して書き込むことができるように、指定したディレクトリに適切なアクセス許可があることを確認してください。
上記の設定により、デフォルトのログディレクトリではなく、指定したディレクトリにログファイルを出力することができます。
ログファイルの構成例
ケースその1
設定ファイル logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<contextName>logback</contextName>
<!--输出到控制台-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!--按天生成日志-->
<appender name="logFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Prudent>true</Prudent>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<FileNamePattern>
applog/%d{yyyy-MM-dd}/%d{yyyy-MM-dd}.log
</FileNamePattern>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} -%msg%n
</Pattern>
</layout>
</appender>
<!-- logger节点,可选节点,作用是指明具体的包或类的日志输出级别,以及要使用的<appender>(可以把<appender>理解为一个日志模板)。addtivity:非必写属性,是否向上级loger传递打印信息。默认是true-->
<logger name="com.leshangju.project" additivity="false">
<appender-ref ref="console"/>
<appender-ref ref="logFile"/>
</logger>
<root level="info">
<appender-ref ref="console"/>
<appender-ref ref="logFile"/>
</root>
</configuration>
ログ生成ディレクトリ表示
ケース2
設定ファイル logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="false" scanPeriod="60 seconds" debug="false">
<springProperty scope="context" name="logPath" source="gjsp.logs.path" defaultValue="${user.home}/data/app/cars-gjsp/logs"/>
<property name="APP_NAME" value="cars-gjsp"/>
<property name="LOG_HOME" value="data/app/gjsp/logs/${APP_NAME}"/>
<springProfile name="prod">
<property name="LOG_HOME" value="/${logPath}/${APP_NAME}"/>
</springProfile>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</layout>
</appender>
<appender name="appLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/${APP_NAME}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/${APP_NAME}-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<MaxHistory>30</MaxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [ %thread ] - [ %-5level ] [ %logger{50} : %line ] - %msg%n</pattern>
</layout>
</appender>
<logger name="org.springframework" level="info" additivity="false"/>
<logger name="io.swagger" level="OFF"/>
<logger name="springfox.documentation" level="OFF"/>
<logger name="io.lettuce" level="info" additivity="false"/>
<logger name="io.netty" level="info" additivity="false"/>
<logger name="org.apache.http.wire" level="info" additivity="false"/>
<logger name="jdbc.connection" level="OFF"/>
<logger name="jdbc.resultset" level="OFF"/>
<logger name="jdbc.resultsettable" level="OFF"/>
<logger name="jdbc.audit" level="OFF"/>
<logger name="jdbc.sqltiming" level="INFO"/>
<logger name="jdbc.sqlonly" level="OFF"/>
<logger name="org.hibernate.SQL" additivity="false">
<level value="info"/>
<appender-ref ref="console"/>
<appender-ref ref="appLogAppender"/>
</logger>
<!-- 2. 输出SQL 的参数到控制台和文件-->
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" additivity="false">
<level value="info"/>
<appender-ref ref="console"/>
<appender-ref ref="appLogAppender"/>
</logger>
<root level="info">
<appender-ref ref="console"/>
<appender-ref ref="appLogAppender"/>
</root>
</configuration>
ログ生成ディレクトリ表示