zoukankan      html  css  js  c++  java
  • 项目1-日志框架

    日志框架

    slf4j+logback

    原理

    https://developer.51cto.com/art/201904/594968.htm

    实现方式

    将系统中其他日志框架排除

    用中间包替换原来的日志框架

         <dependency>
    
           <groupId>org.slf4j</groupId>
    
           <artifactId>jcl-over-slf4j</artifactId><!-- 替换commons-logging-->
    
           <version>1.7.25</version>
    
         </dependency> 
    
         <dependency>
    
           <groupId>org.slf4j</groupId>
    
           <artifactId>jul-to-slf4j</artifactId><!-- 替换java.util.logging-->
    
           <version>1.7.25</version>
    
         </dependency>
    

    slf4j的实现

         <dependency>
    
           <groupId>ch.qos.logback</groupId>
    
           <artifactId>logback-classic</artifactId><!-- 间接依赖logback-core--><!-- 优秀的日志实现-->
    
         </dependency>     
    
         <!-- slf4j(门面): Simple Logging Facade for Java :简单日志门面(接口)(类似JDBC); 
    
              log4j:日志实现(类似数据库驱动); 
    
              log4j2(实现), logback(实现), 
    
              后来我们用slf4j+logback(最稳定的方案); -->
    
         <dependency>
    
           <groupId>org.slf4j</groupId>
    
           <artifactId>slf4j-api</artifactId><!-- 抽象层,接口-->
    
         </dependency>
    

    测试代码

        import org.slf4j.Logger;
        import org.slf4j.LoggerFactory; 
    
        public class HelloWorld {
    
          public static void main(String[] args) {
    
               Logger logger = LoggerFactory.getLogger(TestLog.class);
    
               logger.debug("debug..."); //用于调试程序
    
               logger.info("info...");//用于请求处理提示消息
    
               logger.warn("warn...");//用于警告处理提示消息
    
               logger.error("error...");//用于异常处理提示消息
    
               logger.error("==>>"+logger.getClass());
    
               //class ch.qos.logback.classic.Logger
    
        } 
    
        } 
    

    配置文件logback.xml

    每一个日志的实现框架都有自己的配置文件。使用slf4j以后,配置文件还是做成日志实现框架自己本身的配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    
    <configuration debug="true">
    
        <!-- 指定日志输出的地方-->
    
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    
            <encoder>
    
                <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{360} - 
    %msg%n</pattern>
    
            </encoder>
    
        </appender> 
    
        <!-- 日志:从低到高;只会打印指定级别以后的; additivity表示是否将日志信息反馈给root
    
         DEBUG==》INFO===》WARN===》ERROR
    
         <logger name="com.atguigu.atcrowdfunding.mapper" level="debug" additivity="false">  
    
             <appender-ref ref="STDOUT"/>  
    
         </logger>
    
          -->
    
         <root level="info">
    
             <appender-ref ref="STDOUT" />
    
         </root>
    
    </configuration> 
    

  • 相关阅读:
    运用jQuery实现动态点赞
    $scope作用及模块化解决全局问题
    angular数据绑定---js全局学习
    HDU 2102 A计划 (深搜)
    ffmpeg 常用命令汇总
    基于Red5与ffmpeg实现rtmp处理NVR或摄像头的监控视频处理方案
    Linux 下编写.sh文件运行JAR下的Class
    如何帮助团队完成一个优秀的API文档,Swagger和Spring Rest Docs两个都是十分优秀的工具!...
    你关心的学历问题在这里
    北京一二线大厂以及程序员层级分布
  • 原文地址:https://www.cnblogs.com/suit000001/p/13828837.html
Copyright © 2011-2022 走看看