Spring基础:快速入门spring boot(4):使用slf4j输出日志

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                       
 

本篇文章将在将介绍如何使用slf4j。

这里写图片描述

这里写图片描述

 

Slf4J是Simple Logging Facade for Java的缩写,从其全称即可清晰地看出其定位为日志系统的Facade,其实它就是在不同的日志系统之上封装的门面,便于移植和更换,降低了日志和系统的直接耦合。

使用前提

 

为了使用slf4j,一般需要import的主要有slf4j的Logger和LoggerFactory。

import org.slf4j.Logger;import org.slf4j.LoggerFactory;
   
   
  • 1
  • 2
 

LoggerFactory就是一个普通的工厂模式的实现,可以追到其源码的主要实现部分如下:

    public static ILoggerFactory getILoggerFactory() {        if(INITIALIZATION_STATE == 0) {            Class var0 = LoggerFactory.class;            synchronized(LoggerFactory.class) {                if(INITIALIZATION_STATE == 0) {                    INITIALIZATION_STATE = 1;                    performInitialization();                }            }        }        switch(INITIALIZATION_STATE) {        case 1:            return SUBST_FACTORY;        case 2:            throw new IllegalStateException("org.slf4j.LoggerFactory could not be successfully initialized. See also http://www.slf4j.org/codes.html#unsuccessfulInit");        case 3:            return StaticLoggerBinder.getSingleton().getLoggerFactory();        case 4:            return NOP_FALLBACK_FACTORY;        default:            throw new IllegalStateException("Unreachable code");        }    }
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

使用方式

取得

private final Logger logger = LoggerFactory.getLogger(this.getClass());
   
   
  • 1

使用

    logger.info("## Info  Information ##: {}", name);    logger.warn("## Warn  Information ##: {}", name);    logger.error("## Error Information ##: {}", name);
   
   
  • 1
  • 2
  • 3

修改DemoApplication

package com.example;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import java.util.concurrent.atomic.AtomicLong;@RestController@SpringBootApplicationpublic class DemoApplication {  private final Logger logger = LoggerFactory.getLogger(this.getClass());  private final AtomicLong counter = new AtomicLong();  private final String templateStr="Hello, %s, Welcome to Spring Boot ...";  @RequestMapping("/greeting")  public User greeting(@RequestParam(value="name",defaultValue = "World") String name){    logger.info("## Info  Information ##: {}", name);    logger.warn("## Warn  Information ##: {}", name);    logger.error("## Error Information ##: {}", name);    return new User(counter.incrementAndGet(),String.format(templateStr,name));  }    public static void main(String[] args) {        SpringApplication.run(DemoApplication.class, args);    }}
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

Console输出

  .   ____          _            __ _ _ /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/  ___)| |_)| | | | | || (_| |  ) ) ) )  '  |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot ::        (v1.4.2.RELEASE)2016-12-08 21:13:36.786  INFO 3096 --- [           main] com.example.DemoApplication              : Starting DemoApplication on vcc-PC with PID 3096 (C:\Users\Administrator\IdeaProjects\demo\target\classes started by Administrator in C:\Users\Administrator\IdeaProjects\demo)2016-12-08 21:13:36.786  INFO 3096 --- [           main] com.example.DemoApplication              : No active profile set, falling back to default profiles: default2016-12-08 21:13:36.848  INFO 3096 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@30ee2816: startup date [Thu Dec 08 21:13:36 CST 2016]; root of context hierarchy2016-12-08 21:13:38.411  INFO 3096 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)2016-12-08 21:13:38.426  INFO 3096 --- [           main] o.apache.catalina.core.StandardService   : Starting service Tomcat2016-12-08 21:13:38.426  INFO 3096 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.5.62016-12-08 21:13:38.536  INFO 3096 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext2016-12-08 21:13:38.536  INFO 3096 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1688 ms2016-12-08 21:13:38.676  INFO 3096 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean  : Mapping servlet: 'dispatcherServlet' to [/]2016-12-08 21:13:38.692  INFO 3096 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'characterEncodingFilter' to: [/*]2016-12-08 21:13:38.692  INFO 3096 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]2016-12-08 21:13:38.692  INFO 3096 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'httpPutFormContentFilter' to: [/*]2016-12-08 21:13:38.692  INFO 3096 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'requestContextFilter' to: [/*]2016-12-08 21:13:38.972  INFO 3096 --- [           main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@30ee2816: startup date [Thu Dec 08 21:13:36 CST 2016]; root of context hierarchy2016-12-08 21:13:39.050  INFO 3096 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/greeting]}" onto public com.example.User com.example.DemoApplication.greeting(java.lang.String)2016-12-08 21:13:39.050  INFO 3096 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)2016-12-08 21:13:39.050  INFO 3096 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)2016-12-08 21:13:39.082  INFO 3096 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]2016-12-08 21:13:39.082  INFO 3096 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]2016-12-08 21:13:39.113  INFO 3096 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]2016-12-08 21:13:39.253  INFO 3096 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup2016-12-08 21:13:39.316  INFO 3096 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)2016-12-08 21:13:39.316  INFO 3096 --- [           main] com.example.DemoApplication              : Started DemoApplication in 3.109 seconds (JVM running for 3.645)
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

结果确认

 

画面刷新

扫描二维码关注公众号,回复: 3890631 查看本文章

这里写图片描述

 

log输出确认

这里写图片描述

 

参数绑定刷新

这里写图片描述

 

log输出确认

这里写图片描述

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述

猜你喜欢

转载自blog.csdn.net/sdfsdfytre/article/details/83535702