序文
logback、log4jの、log4j2(slj4fで呼び出すことができ、この標準のロギングフレームワークを達成するために定義された仕様と等価であるslj4fないロギングフレームワーク、)次のようないくつかのロギングフレームワークのJavaウェブは、あります。これはlogback最高のパフォーマンスをしなければならない、とBenpianは詳細logbackロギング設定で説明しますので、それはまた、springboot・デフォルト・ログが使用するlogback。
この章では、データは次のよう:
- logbackプロファイルを構成します
- ファイルへの出力をログに記録する方法
- どの時点で、サイズのセグメンテーションログによって、
- 唯一のログレベル、ログファイルを作成する方法
- 指定したログファイルに次のパケットのログ出力を指定する方法
使用するのは簡単
複雑な設定なしにログインする場合、簡単なセットを印刷のログレベルを行い、ダイレクトプリントモードを再構成application.ymlすることができます。
デフォルトでは、春のブート情報レベルのログを出力コンソールにではなく、ログファイルに、そして複雑な構成にすることはできません。
ファイルへの印刷
あなたは、次の二つの構成により、出力ファイルにログインするとします。
logging:
# 配置输出额日志文件名,可以带路径
# file: out.log
# 配置日志存放路径,日志文件名为:spring.log
path: ./log
file:
# 设置日志文件大小
max-size: 10MB
注意:両方の設定があれば、ファイルやパスは、同じ時間に設定されていないpath
有効になりません。
印刷レベルコントロール
次の形式で、制御レベルを設定することにより、印刷をログに記録します。
logging.level.*=TRACE/DEBUG/INFO/...
次のように* Loggerは、パッケージ名や名前にすることができます。
logging:
level:
# root日志以WARN级别输出
root: info
# 此包下所有class以DEBUG级别输出
com.example.log_demo.log1: warn
logback詳細な構成
次に、どのように別々のXML設定ファイルによってログの印刷を設定します。springbootは、XMLを破壊することであるが、いくつかの複雑な機能は、まだXMLを記述する必要がありますが。競合を避けるために、使用したXMLコンフィギュレーションを削除した後application.ymlします。
ロギングシステムによっては、組織プロファイル名を指定し、リソースディレクトリの下に置かれたの規則に従って自動的に春ブーツをロードすることができます。
- Logback:logback-spring.xml、logback-spring.groovy、logback.xml、logback.groovy
- Log4jの:log4j-spring.properties、log4jの-spring.xml、log4j.properties、のlog4j.xml
- Log4j2:log4j2-spring.xml、log4j2.xml
- JDK(JavaのUtilのロギング):logging.properties
構成することができ、ファイル名をカスタマイズしたい:logging.config
設定ファイル名を指定します。
logging.config=classpath:logging-config.xml
春ブーツの公式を使用すると、logback-spring.xmlログ設定ファイルの名前、(このような使用logback-spring.xmlはなく、logback.xmlとして)の設定を記録して、春のブートが可能-springとファイル名を使用することをお勧めしますいくつかの春ブーツ固有の設定項目(下記)を追加します。
組成logbackのプロフィール
ルートは<configuration>
一つ導入された1つの下に5つのサブノードを有します。
<root>
ノード
必要なルートノードはノードであり、最も基本的なログ出力レベルを指定するために使用され、唯一のレベルのプロパティ印刷レベルを設定するため、オプションは次のとおりです。TRACE
、DEBUG
、INFO
、WARN
、ERROR
、ALL
、OFF
。
0以上の元素を含んでいてもよいルートノードがあろうappender
添加します。次のように:
<root level="debug">
<appender-ref ref="console" />
<appender-ref ref="file" />
</root>
アペンダは、後述するように、また、子ノードの一つです。
<contextName>
ノード
コンテキスト名が提供され、デフォルトとしてdefault
、することができ%contextName
、一般的に、このプロパティを使用していない、コンテキスト名を印刷します。
<property>
ノード
使いやすい、変数を定義するために使用されます。名前、値:2つの属性があります。あなたは、変数を定義した後は、使用することができます${}
変数を使用します。次のように:
<property name="path" value="./log"/>
<property name="appname" value="app"/>
<appender>
ノード
アペンダログ出力ノード、最も重要なの書式を設定するために使用。2つの属性があります。
- 名前:このアペンダの名前
- クラスは:コンソール出力、ファイル出力:通常2つがあり、出力ポリシーを指定します。
どのようにこの使用方法を説明するために、次の例で:
- コンソール/ログ出力時に出力
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!--设置存储路径变量-->
<property name="LOG_HOME" value="./log"/>
<!--控制台输出appender-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!--设置输出格式-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<!--设置编码-->
<charset>UTF-8</charset>
</encoder>
</appender>
<!--文件输出,时间窗口滚动-->
<appender name="timeFileOutput" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--日志名,指定最新的文件名,其他文件名使用FileNamePattern -->
<File>${LOG_HOME}/timeFile/out.log</File>
<!--文件滚动模式-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名,可设置文件类型为gz,开启文件压缩-->
<FileNamePattern>${LOG_HOME}/timeFile/info.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>30</MaxHistory>
<!--按大小分割同一天的-->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<!--输出格式-->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
<!--设置编码-->
<charset>UTF-8</charset>
</encoder>
</appender>
<!--指定基础的日志输出级别-->
<root level="INFO">
<!--appender将会添加到这个loger-->
<appender-ref ref="console"/>
<appender-ref ref="timeFileOutput"/>
</root>
</configuration>
- レベル出力のみの単一のセット
このデフォルトレベルで濾過アペンダ、フィルタ子ノードを設け、onMatchに配置され、onMismatchレベルのみ出力単一達成することができます
<appender ...>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<!--接受匹配-->
<onMatch>ACCEPT</onMatch>
<!--拒绝不匹配的-->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<logger>
ノード
構造
このノードは、特定のパッケージまたは印刷ログのクラスレベルを設定するために使用され、指定された<appender>
次の3つの特性があります:
- 名前:必要があります。Logerこれにバインドされたパッケージまたは特定のクラスを指定します
- レベル:オプション。印刷レベルを設定します。デフォルトでは、ルートレベルです。
- addtivity:オプション。印刷情報は、より高いloger(すなわち、ルートノードである)に渡されるかどうか。デフォルトはtrueです。
例を使用します。
- レベルが指定されているん、アペンダを指定しません。
<!-- 控制com.example.service下类的打印,使用root的level和appender -->
<logger name="com.example.service"/>
2.レベルが指定されていません指定しアペンダ
<!-- 控制com.example.service下类的打印,使用root的appender打印warn级别日志 -->
<logger name="com.example.service" level="WARN"/>
3.レベル指定されたアペンダを指定します
<!-- 控制com.example.service下类的打印,使用console打印warn级别日志 -->
<!-- 设置addtivity是因为这里已经指定了appender,如果再向上传递就会被root下的appender再次打印 -->
<logger name="com.example.service" level="WARN" addtivity="false">
<appender-ref ref="console">
</logger>
あなたは、アペンダを指定することにより、指定された印刷ファイルに指定されたパケットにログインできるようになります。
複数の環境では、出力をログに記録します
次のように-spring、分離可能な環境設定ロガーを設定し、ファイル名の終わりまでに、例を示します。
<configuration>
<!-- 测试环境+开发环境. 多个使用逗号隔开. -->
<springProfile name="test,dev">
<logger name="com.example.demo.controller" level="DEBUG" additivity="false">
<appender-ref ref="console"/>
</logger>
</springProfile>
<!-- 生产环境. -->
<springProfile name="prod">
<logger name="com.example.demo" level="INFO" additivity="false">
<appender-ref ref="timeFileOutput"/>
</logger>
</springProfile>
</configuration>
設定することでspring.profiles.active
ロガー上記の印刷設定を切り替えるために行うことができます
終了
印刷ログは非常に複雑になることがあり、ここでの唯一の共通logback構成は、コードを参照することを示していますGitHubのを