spring mvc+logback日志(1)--引用整合概述

一、简介

Logback 继承自 log4j。

Logback 的架构非常的通用,适用不同的使用场景。Logback 被分成三个不同的模块:logback-core,logback-classic,logback-access。

logback-core 是其它两个模块的基础。logback-classic 模块可以看作是 log4j 的一个优化版本,它天然的支持 SLF4J,所以你可以随意的从其它日志框架(例如:log4j 或者 java.util.logging)切回到 logack。

logback-access 可以与 Servlet 容器进行整合,例如:Tomcat、Jetty。它提供了 http 访问日志的功能。


二、参考文档

1.logback中文手册
2.官网


三、模块介绍

我们看到下面,除了logback-core、logback-classic、logback-access还有两个logback-site和logback-examples

  
    logback-core
    logback-classic
    logback-access
    logback-site
    logback-examples
  

四、历史版本介绍

版本历史新闻
1.3.x系列是Jigsaw / Java 9的模块化模块,需要slf4j-api版本2.0.x。此外,1.3.x系列在运行时需要Java 8,而从源代码构建登录需要Java 9。
因为1.3版本全为alpha版本。
故我们采用最新稳定版本1.2.3

四、web中创建logback

如何在Web应用程序中设置SLF4J和LOGBack
基于第一个项目mini项目开发。
1、引入maven依赖

        
            ch.qos.logback
            logback-classic
            1.2.3
        

2、引入logback.xml配置
src/main/resources/[logback.xml]



    
        
            %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
        
    
    
    
        
    

3、在控制器中使用,路径com.jc.controller.HelloController

@Controller
public class HelloController {
   + static final Logger LOG = LoggerFactory.getLogger(HelloController.class);
    @RequestMapping(value="/welcome1")  //welcome要访问的url地址
    public  String  hello1(String uname, Model model){//此时方法参数与传来参数名称一致
      + LOG.trace("Hello World!");
      + LOG.debug("How are you today?");
      + LOG.info("I am fine.");
      + LOG.warn("I love programming.");
      + LOG.error("I am programming.");
        System.out.println("hello,springmvc"+uname);
        model.addAttribute("username","张三1112");
        return "hello";  //hello是逻辑视图名,和后缀名组合一起构成视图名  /web-inf/jsp/hello.jsp
    }
}

4、测试结果

21:53:17.455 [http-nio-8080-exec-2] INFO  com.jc.controller.HelloController - I am fine.
21:53:17.455 [http-nio-8080-exec-2] WARN  com.jc.controller.HelloController - I love programming.
21:53:17.455 [http-nio-8080-exec-2] ERROR com.jc.controller.HelloController - I am programming.
hello,springmvcnull

五、logback-access

我们看到很多使用logback的maven里面,引入了logback-access这个模块。
错误示范:
https://blog.csdn.net/u012489412/article/details/82590768
https://www.cnblogs.com/tanghaoran-blog/p/10404897.html
https://blog.csdn.net/niugang0920/article/details/80411376
先说说普遍问题:


    ch.qos.logback
    logback-core
    ${logback.version}


      ch.qos.logback
      logback-access
      1.2.3

logback-core:其实在logback-classic中父节点已经存在,所以引入这个其实就是多余的。
logback-access:其实不建议使用,看如下定义
参考资料:在tomcat或jetty下,使用logback-access访问HTTP-access日志
定义:

logback-access模块​​是标准logback发行版的一部分,与Servlet容器(如Jetty或Tomcat)集成在一起,以提供丰富而强大的HTTP-access日志功能。

关键词:HTTP-access日志功能。

What is an access log?
An access log is a list of all the requests for individual files that people have requested from a Web site. These files will include the HTML files and their imbedded graphic images and any other associated files that get transmitted.

其实说了一屁股的废话,到底是干嘛呢,好抽象啊。。
本以为是:用于读取access.log日志,并展示于页面,如下
LogBack 框架里log-access的使用
最后其实是:用于写入访问日志的。
其代替的是tomcat server.xml中的日志写入。默认配置:


被替换为


参考资料:
tomcat sl4j登录
再回去看官方例子LogBack 框架里log-access的使用
我们可以看到,通篇没有使用maven的例子,都是在说tomcat中如何修改并使用的问题及配置规则。
总结:
logback-classic是程序业务日志,作用于我们的war包之内,可通过maven引入
logback-access是tomcat访问日志,作用于tomcat,需要在server.xml中配置,并将jar包放入tomcat的lib中


六:logback-ext-spring

我们看到很多使用logback的maven里面,引入了logback-ext-spring这个依赖。
在第4步和官方网文档示例,都没有看到这个依赖,我们的spring已经可以很好的运行了,那么这个依赖有什么作用呢?

参考资料:

很丑的一个示例,切勿模仿
又是一个重复且不知所谓的示例
一个有说明的例子

民间定义:不过未找到在官方哪里有进行的定义

logback-ext-spring是由官方提供的对Spring的支持,它的作用就相当于log4j中的Log4jConfigListener;这个listener,网上大多都是用的自己实现的,原因在于这个插件似乎并没有出现在官方文档的显要位置导致大多数人并不知道它的存在

官方定义:

https://github.com/qos-ch/logback-extensions/wiki/Spring

This extension allows you to:

  • Configure Logback components (Appenders, Layouts, etc) within Spring configuration (e.g. applicationContext.xml and Spring Java config).
  • Begin receiving log messages before Spring and the servlet starts, and store them in memory until the Appenders are configured.
  • Use SLF4J's java.util.logging bridge.
  • Specify the logback.xml location using a Spring resource path and system propertyplaceholders.
  • Use the pre-set system property webapp.root (path to unpacked WAR directory) inside the logback.xml for setting log file paths, etc.

The last two features can help avoid having to configure Logback components programmatically.
总结来说,就是可以自定义logback路径名字,可以在applicationContext.xml中直接配置,可以使用系统属性占位符。
如果没有特殊要求的小伙伴是可以不用引入它的,因为看很多例子,其实引用了,但是并没有使用相关功能。

七、jcl-over-slf4j

定义:

jcl-over-slf4j是用来把Spring源代码中大量使用到的commons-logging替换成slf4j,只有在添加了这个依赖之后才能看到Spring框架本身打印的日志,否则只能看到开发者自己打印的日志

官方资料

使用
        
            org.slf4j
            jcl-over-slf4j
            1.7.25
        

我们可以看到,使用后,spring 框架库使用的common-logging相应日志正常输出
结构图:


image.png

下一篇,讲解logback配置文件的使用

你可能感兴趣的:(spring mvc+logback日志(1)--引用整合概述)