タイトル:春ブーツ日志
カタログ:真
日付:2019年9月23日夜01時35分41秒
字幕:SpringBoot日志
ヘッダー-IMG:「/img/article_header/article_header.png」
タグ:春ブート
catagories:
- SpringBoot
A.ロギングフレームワーク
市場のロギングフレームワーク。
7月、JCLは、JBoss-ロギング、logback、log4jの、log4j2、SLF4J ...
ファサードログ(ログ抽象化層) | ログイン実現 |
---|---|
Log4jの7月(のjava.util.logging)Log4j2 Logback |
右の一の実装を選択するために、ファサード(抽象化層)の左から選択されます。
ログファサード:SLF4J。
ログの実現:Logback。
SpringBoot:最下層には、Springフレームワーク、春のフレームワークのデフォルトJCLです
SpringBootの選択肢はSLF4Jとlogbackです
2 .SLF4Jを使用します
システムを使用する方法1. SLF4J
ロギングメソッドは、クラスはメソッドログ抽象化層内の20回の呼び出しをログ実装を直接呼び出すことはできません。
SLF4Jは、ジャー・ジャーとlogbackを達成するためにシステムに導入しました
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(HelloWorld.class);
logger.info("Hello World");
}
}
アイコン:
実装フレームワークは、各ログには、独自の設定ファイルを持っています。SLF4Jを使用した後、設定ファイルやロギング実装フレームワーク自体がプロファイルにします。
2.レガシーの問題
同じフレームシステムにログが複数存在します。
項目A(SLF4J + logback):春(コモン・ログ)、休止状態(JBossの-ログ)、MyBatisのような
私たちは、統合ログ、さらには他のフレームをすることができ、あなたはSLF4J出力を使用することができます。
SLF4Jに統一されているシステムにすべてのログを取得する方法:
- 他のシステムログファイルを除外する
- ログタンディッシュのオリジナルフレームを交換してください
- 私たちは、SLF4J他の実装をインポートします
三.SpringBootログの関係
最も基本的なログ関連の依存性:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.1.8.RELEASE</version>
<scope>compile</scope>
</dependency>
SpringBootは、ロギングのためにそれを使用します。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
<version>2.1.8.RELEASE</version>
<scope>compile</scope>
</dependency>
根本的な依存関係:
要約:
- SpringBoot下層はSLF4J + logback方法ログを用いています
- 他のログと置き換えることSpringBoot SLF4J
- また中間パッケージには、元のロギングフレームワークを置き換えます
- 私たちは、他のフレームワークを紹介したい場合は、このフレームワークは、デフォルトのログを削除するために取る必要があります。
SpringBootは自動的にすべてのログに適応し、SLF4J + logbackログ、他のフレームの導入は、フレームの必要性のみに依存するフレームを除外するためにログインする方法の下を使用しています。
IV。使用ログ
1.デフォルト設定
SpringBootヘルプは、私たちには、デフォルトのログを設定します
// 记录器
Logger logger = LoggerFactory.getLogger(getClass());
@Test
public void contextLoads() {
// 日志的级别
// 日志由高到低 trace<debug<info<warn<error
// 可以调整输出的日志级别,日志就只会在这个级别
logger.trace("这是trace日志。。。。");
logger.debug("这是debug日志。。。");
// SpringBoot默认给我们使用的是info级别,没有指定级别的就用SpringBoot默认规定的级别,root级别
logger.info("这是info日志。。。");
logger.warn("这是warn日志。。");
logger.error("这是errorr日志");
}
ログファイルの出力形式:
ログの出力形式:
-
%Dは、日付と時刻を示します
-
%のスレッドは、スレッド名を表します
-
%-5level:表示するには、左からレベル5文字幅
-
%ロガーは{50}は、さもなければ周期に応じて分割し、50文字ロガー名を表します。
-
%メッセージ:ログメッセージ、
-
%Nは改行であります
比如た:%d {YYYY-MM-DD HH:MM:SS.SSS} [%スレッド]%-5level%ロガー{50} - %のMSGの%nを
logging.file | logging.path | 例 | 説明 |
---|---|---|---|
(なし) | (なし) | コンソールでのみ出力 | |
ファイル名を指定してください | (なし) | my.log | my.logへの出力ログファイル |
(なし) | 指定されたディレクトリ | / var / log | 指定されたディレクトリ内のファイルへの出力Spring.log |
2.指定配置
各ログには、独自の構成ファイルをフレーム、springbootは、クラスパスの分権化にデフォルト設定を使用しません
ロギングシステム | カスタム化 |
---|---|
Logback | logback-spring.xml 、logback-spring.groovy 、logback.xml またはlogback.groovy |
Log4j2 | log4j2-spring.xml 若しくは log4j2.xml |
JDK(JavaのUtilのロギング) | logging.properties |
logback.xml:ログフレームワークは、直接識別します
logback-spring.xml:ログフレームワークを直接読み込むログ構成を解析することにより、SpringBoot設定項目を記録することはできません、あなたはSpringBootは、機能プロファイルを高度な使用することができます
<springProfile name="staging">
<!-- configuration to be enabled when the "staging" profile is active -->
可以指定某段配置只在某个环境下生效
</springProfile>
以下のような:
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<!--
日志输出格式:
%d表示日期时间,
%thread表示线程名,
%-5level:级别从左显示5个字符宽度
%logger{50} 表示logger名字最长50个字符,否则按照句点分割。
%msg:日志消息,
%n是换行符
-->
<layout class="ch.qos.logback.classic.PatternLayout">
<springProfile name="dev">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ---> %-5level %logger{50} - %msg%n</pattern>
</springProfile>
<springProfile name="!dev">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ==== [%thread] ==== %-5level %logger{50} - %msg%n</pattern>
</springProfile>
</layout>
</appender>