springbootプロジェクトログ設定ファイルの詳細説明

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

  1. ログバックスプリング.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.propertiesapplication.ymllogging.level.*
    • logback-spring.xml ロード順序は よりも優先されます logback.xml
  2. ログバック.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>

 ログ生成ディレクトリ表示

 

おすすめ

転載: blog.csdn.net/m0_69057918/article/details/132389719