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
    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.file
    loging.path
    Example
    Description
    (none)
    (none)
    コンソール出力のみ
    ファイル名を指定
    (none)
    my.log
    ログをmy.logファイルに出力します.
    (none)
    ディレクトリを指定
    //var/log
    指定されたディレクトリのspring.logファイルに出力します.
    2、設定を指定する
    クラスパスの下に各ログフレームの自分の設定ファイルを置いてもいいです.Spring Bootは彼のデフォルトの配置を使いません.
    ロギングSystem
    Customization
    ロックバックlogback-spring.xmllogback-spring.groovylogback.xml or logback.groovyLog 4 j 2log4j2-spring.xml or log4j2.xmlJDK(Java Util Logging)logging.propertieslogback.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>