Spring Bootとログ
25482 ワード
Spring Bootとログ
三、日誌
シリコンバレーに転載する 1. . . . . . . . 9. . 1、ログフレーム
張さん大型システムを開発する.
1、System.out.println(");キーデータをコンソールに印刷します.取り除く?一つのファイルに書きますか?
2、フレームワークでシステムの実行時情報を記録します.ログフレーム;zhanglogging.jar;
3、背が高くて、いくつかの機能がありますか?非同期モード?自動アーカイブ?xxxxですかzhangloging-good.jar?
4、以前のフレームを取り外しますか?新しいフレームに換えて、前に関連したAPIを再修正する.zhangloging-prefect.jar;
5、JDBC—データベースドライバ;
統一したインターフェース層を書きました.ログの外観(ログの抽象層)loging-abstract.jar;
プロジェクトに具体的なログを導入して実現すればいいです.私達の前のログフレームはすべて実現の抽象層です.
市場の日誌フレーム;
JUL、JCL、Jboss-loging、logback、log 4 j、log 4 j 2、sf 4 j…
ログの外観(ログの抽象層)
ログの実装
JCL(Jakata Commons Logging)SLF 4 j(Simple Logg Facade for Java)jboss-loging
Log 4 j JUL(java.util.logging)Log 4 j 2 Logback
左の顔(抽象層)と右の方を選んで実現します.
SLF 4 J;
ログ実現:Logback;
Spring Boot:最下層はSpringフレームで、SpringフレームはデフォルトではJCLを使います.
SpringBootはSLF 4 jとlogbackを選択します.
2、SLF 4 j使用
1、どうやってシステムの中でSLF 4 jを使うか?https://www.slf4j.org
後で開発する時、ログ記録方法の呼び出しは、ログの実現カテゴリを直接呼び出すべきではなく、ログの抽象層の中のメソッドを呼び出します.
sf 4 jをシステムに導入するjarとlogbackの実現jar
[外部チェーン写真の転載に失敗しました.ソースステーションには盗難防止チェーン機構があるかもしれません.画像を保存して直接アップロードすることをお勧めします(img-2 OeTpNIP-158835917810)(imags/concrete-bindings.png).
各ログの実装フレームには自分の設定ファイルがあります.sf 4 jを使ってから、設定ファイルを作成しますか?それともログを作成して、フレーム自体の配置ファイルを実現します.
2、問題を残す
a(slaf 4 j+logback):Spring(commons-loging)、Hyberrate(jboss-loging)、MyBatis、xxx
ログを統一して、他のフレームでも私と一緒にsf 4 jを使って出力しますか?
[外部チェーン写真の転載に失敗しました.ソースステーションは防犯チェーンの機構があるかもしれません.画像を保存して直接アップロードすることを提案します.(imags-yfDcmKIl-158835917811)(imags/legacy.png).
どのようにしてシステムのすべてのログをsf 4 jに統一するか?
1、システム内の他のログフレームを先に除外する.
2、中間パッケージで既存のログフレームを置き換える.
3、私達はslaf 4 jのその他の実現を導入します.
3、Spring Boot日誌関係
[外鎖写真の転載に失敗しました.ソースステーションには盗難防止チェーンの機構があるかもしれません.画像を保存して直接アップロードすることをお勧めします.(imags-rhIzyXrkr-158835917818)(imags/犬の捜図20180131313220946 png).
まとめ:
1)、SprigBootの下層もslif 4 j+logbackを使ってログを記録しています.
2)、SprigBootも他のログをslaf 4 jに置き換えました.
3)、中間的にカバンを交替しますか?
4)他のフレームを導入するなら?このフレームのデフォルトログを削除します.
Springフレームはcommons-logingを使用しています.
4、ログの使用
1、標準設定
Spring Bootはデフォルトでログを設定してくれます.
loging.path
Example
Description
(none)
(none)
コンソール出力のみ
ファイル名を指定
(none)
my.log
ログをmy.logファイルに出力します.
(none)
ディレクトリを指定
//var/log
指定されたディレクトリのspring.logファイルに出力します.
2、設定を指定する
クラスパスの下に各ログフレームの自分の設定ファイルを置いてもいいです.Spring Bootは彼のデフォルトの配置を使いません.
ロギングSystem
Customization
ロックバック
logback-spring.xml:ログフレームは直接ログの配置項目をロードしないで、Spring Boot解析ログから構成されています.Spring Bootの高級Profile機能を使用することができます.
sf 4 jのログ適応図に従って、関連する切り替えが可能である.
sf 4 j+log 4 jの方式.
三、日誌
シリコンバレーに転載する
張さん大型システムを開発する.
1、System.out.println(");キーデータをコンソールに印刷します.取り除く?一つのファイルに書きますか?
2、フレームワークでシステムの実行時情報を記録します.ログフレーム;zhanglogging.jar;
3、背が高くて、いくつかの機能がありますか?非同期モード?自動アーカイブ?xxxxですかzhangloging-good.jar?
4、以前のフレームを取り外しますか?新しいフレームに換えて、前に関連したAPIを再修正する.zhangloging-prefect.jar;
5、JDBC—データベースドライバ;
統一したインターフェース層を書きました.ログの外観(ログの抽象層)loging-abstract.jar;
プロジェクトに具体的なログを導入して実現すればいいです.私達の前のログフレームはすべて実現の抽象層です.
市場の日誌フレーム;
JUL、JCL、Jboss-loging、logback、log 4 j、log 4 j 2、sf 4 j…
ログの外観(ログの抽象層)
ログの実装
JCL(Jakata Commons Logging)SLF 4 j(Simple Logg Facade for Java)jboss-loging
Log 4 j JUL(java.util.logging)Log 4 j 2 Logback
左の顔(抽象層)と右の方を選んで実現します.
SLF 4 J;
ログ実現:Logback;
Spring Boot:最下層はSpringフレームで、SpringフレームはデフォルトではJCLを使います.
SpringBootはSLF 4 jとlogbackを選択します.
2、SLF 4 j使用
1、どうやってシステムの中でSLF 4 jを使うか?https://www.slf4j.org
後で開発する時、ログ記録方法の呼び出しは、ログの実現カテゴリを直接呼び出すべきではなく、ログの抽象層の中のメソッドを呼び出します.
sf 4 jをシステムに導入するjarとlogbackの実現jar
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");
}
}
図示する[外部チェーン写真の転載に失敗しました.ソースステーションには盗難防止チェーン機構があるかもしれません.画像を保存して直接アップロードすることをお勧めします(img-2 OeTpNIP-158835917810)(imags/concrete-bindings.png).
各ログの実装フレームには自分の設定ファイルがあります.sf 4 jを使ってから、設定ファイルを作成しますか?それともログを作成して、フレーム自体の配置ファイルを実現します.
2、問題を残す
a(slaf 4 j+logback):Spring(commons-loging)、Hyberrate(jboss-loging)、MyBatis、xxx
ログを統一して、他のフレームでも私と一緒にsf 4 jを使って出力しますか?
[外部チェーン写真の転載に失敗しました.ソースステーションは防犯チェーンの機構があるかもしれません.画像を保存して直接アップロードすることを提案します.(imags-yfDcmKIl-158835917811)(imags/legacy.png).
どのようにしてシステムのすべてのログをsf 4 jに統一するか?
1、システム内の他のログフレームを先に除外する.
2、中間パッケージで既存のログフレームを置き換える.
3、私達はslaf 4 jのその他の実現を導入します.
3、Spring Boot日誌関係
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starterartifactId>
dependency>
SpringBootはそれを使ってログ機能を作ります. <dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-loggingartifactId>
dependency>
下の依存関係[外鎖写真の転載に失敗しました.ソースステーションには盗難防止チェーンの機構があるかもしれません.画像を保存して直接アップロードすることをお勧めします.(imags-rhIzyXrkr-158835917818)(imags/犬の捜図20180131313220946 png).
まとめ:
1)、SprigBootの下層もslif 4 j+logbackを使ってログを記録しています.
2)、SprigBootも他のログをslaf 4 jに置き換えました.
3)、中間的にカバンを交替しますか?
@SuppressWarnings("rawtypes")
public abstract class LogFactory {
static String UNSUPPORTED_OPERATION_IN_JCL_OVER_SLF4J = "http://www.slf4j.org/codes.html#unsupported_operation_in_jcl_over_slf4j";
static LogFactory logFactory = new SLF4JLogFactory();
[外鎖写真の転載に失敗しました.ソースステーションは盗難防止チェーン機構があるかもしれません.画像を保存して直接アップロードすることをお勧めします.(img-z 4 rRMKgW-158835917818)(imags/捜犬スクリーンショット2018013131311.png).4)他のフレームを導入するなら?このフレームのデフォルトログを削除します.
Springフレームはcommons-logingを使用しています.
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-coreartifactId>
<exclusions>
<exclusion>
<groupId>commons-logginggroupId>
<artifactId>commons-loggingartifactId>
exclusion>
exclusions>
dependency>
SpringBootは自動的にすべてのログに適応できます.そして、下の階にslaf 4 j+logbackを使ってログを記録します.他のフレームを導入する時は、このフレームに依存するログフレームを排除すればいいです.4、ログの使用
1、標準設定
Spring Bootはデフォルトでログを設定してくれます.
//
Logger logger = LoggerFactory.getLogger(getClass());
@Test
public void contextLoads() {
//System.out.println();
// ;
// trace
// ;
logger.trace(" trace ...");
logger.debug(" debug ...");
//SpringBoot info , SpringBoot ;root
logger.info(" info ...");
logger.warn(" warn ...");
logger.error(" error ...");
}
:
%d ,
%thread ,
%-5level: 5
%logger{50} logger 50 , 。
%msg: ,
%n
-->
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
Spring Bootログのデフォルト設定を変更します.logging.level.com.atguigu=trace
#logging.path=
# springboot.log
# ;
#logging.file=G:/springboot.log
# spring log ; spring.log
logging.path=/spring/log
#
logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n
#
logging.pattern.file=%d{yyyy-MM-dd} === [%thread] === %-5level === %logger{50} ==== %msg%n
loging.fileloging.path
Example
Description
(none)
(none)
コンソール出力のみ
ファイル名を指定
(none)
my.log
ログをmy.logファイルに出力します.
(none)
ディレクトリを指定
//var/log
指定されたディレクトリのspring.logファイルに出力します.
2、設定を指定する
クラスパスの下に各ログフレームの自分の設定ファイルを置いてもいいです.Spring Bootは彼のデフォルトの配置を使いません.
ロギングSystem
Customization
ロックバック
logback-spring.xml
、logback-spring.groovy
、logback.xml
or logback.groovy
Log 4 j 2log4j2-spring.xml
or log4j2.xml
JDK(Java Util Logging)logging.properties
logback.xml:直接ログフレームに認識されました.logback-spring.xml:ログフレームは直接ログの配置項目をロードしないで、Spring Boot解析ログから構成されています.Spring Bootの高級Profile機能を使用することができます.
<springProfile name="staging">
springProfile>
例えば:<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<springProfile name="dev">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ---> %-5level %logger{50} - %msg%npattern>
springProfile>
<springProfile name="!dev">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ==== [%thread] ==== %-5level %logger{50} - %msg%npattern>
springProfile>
layout>
appender>
ログバック.xmlをログ設定ファイルとして使用する場合、プロfile機能を使用すると、以下のエラーが発生します.no applicable action for [springProfile]
5、ログフレームの切り替えsf 4 jのログ適応図に従って、関連する切り替えが可能である.
sf 4 j+log 4 jの方式.
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
<exclusions>
<exclusion>
<artifactId>logback-classicartifactId>
<groupId>ch.qos.logbackgroupId>
exclusion>
<exclusion>
<artifactId>log4j-over-slf4jartifactId>
<groupId>org.slf4jgroupId>
exclusion>
exclusions>
dependency>
<dependency>
<groupId>org.slf4jgroupId>
<artifactId>slf4j-log4j12artifactId>
dependency>
ロゴ4 j 2に切り替え <dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-loggingartifactId>
<groupId>org.springframework.bootgroupId>
exclusion>
exclusions>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-log4j2artifactId>
dependency>