springboot 日志_Spring Boot 依赖注入和日志

c8d7a4dfece3ba844e1c37f8bcf8dde3.png

Spring Boot Bean和依赖注入

在Spring Boot中,可以使用Spring Framework来定义bean及其依赖注入。 @ComponentScan注释用于查找bean以及使用@Autowired注释注入的相应内容。

如果遵循Spring Boot典型布局,则无需为@ComponentScan注释指定任何参数。 所有组件类文件都自动注册到Spring Beans。

以下示例提供了有关自动连接Rest Template对象并为其创建Bean代码片段 -

@Bean
public RestTemplate getRestTemplate() {
   return new RestTemplate();
}
Java

以下代码显示主Spring Boot Application类文件中自动连接的Rest Template对象和Bean创建对象的代码 -

package com.yiibai.demo;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
public class DemoApplication {
@Autowired
   RestTemplate restTemplate;

   public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
   }
   @Bean
   public RestTemplate getRestTemplate() {
      return new RestTemplate();   
   }
}

Spring Boot 运行器

应用程序运行器(Runner)和命令行Runner接口允许在Spring Boot应用程序启动后执行代码。可以使用这些接口在应用程序启动后立即执行一些操作。本章将详细讨论它们。

应用程序运行器

应用程序运行器(Runner)是一个用于在Spring Boot应用程序启动后执行代码的接口。 下面给出的示例显示了如何在主类文件上实现Application Runner接口。

package com.yiibai.demo;

import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication implements ApplicationRunner {
   public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
   }
   @Override
   public void run(ApplicationArguments arg0) throws Exception {
      System.out.println("Hello World from Application Runner");
   }
}
Java

现在,如果从Application Runner观察Hello World下面的控制台窗口,则在Tomcat启动后执行println语句。以下屏幕截图所示:

7da32a80fcb3abd4bc978453d34ec0bc.png

命令行运行器

控制台窗口Runner是一个接口。 它用于在Spring Boot应用程序启动后执行代码。下面给出的示例显示了如何在主类文件上实现控制台窗口Runner接口。

package com.yiibai.demo;

import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication implements CommandLineRunner {
   public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
   }
   @Override
   public void run(String... arg0) throws Exception {
      System.out.println("Hello world from Command Line Runner");
   }
}
Java

查看下面的控制台窗口可以看到打印的字符串:"Hello world from Command Line Runner",它在Tomcat启动后执行println语句。

Spring Boot 日志

Spring Boot使用Apache Commons日志记录进行所有内部日志记录。Spring Boot的默认配置支持使用Java Util Logging,Log4j2和Logback。 使用这些,可以配置控制台日志记录以及文件日志记录。

如果使用的是Spring Boot Starters,Logback将为日志记录提供良好的支持。 此外,Logback还提供对Common Logging,Util Logging,Log4J和SLF4J的良好支持。

日志格式

默认的Spring Boot Log格式显示在下面给出的屏幕截图中。

30aac28aa95e294589238806d09f647e.png

它提供以下信息 -

  • 提供日志日期和时间的日期和时间。
  • 日志级别显示有:INFO,ERROR或WARN。
  • 进程ID。
  • ---是一个分隔符。
  • 线程名称括在方括号[]中。
  • 记录器名称,显示源类名称。
  • 日志消息。

控制台日志输出

默认日志消息将打印到控制台窗口。 默认情况下,INFOERRORWARN日志消息将打印在日志文件中。 如果必须启用调试级别日志,请使用以下命令在启动应用程序时添加调试标志 -

java –jar demo.jar --debug
Shell

还可以将调试模式添加到application.properties 文件中,如下所示 -

debug = true
Shell

文件日志输出

默认情况下,所有日志都将在控制台窗口中打印,而不是在文件中打印。 如果要在文件中打印日志,则需要在application.properties 文件中设置属性logging.filelogging.path 。 可以使用下面显示的属性指定日志文件路径。 请注意,日志文件名是spring.log

logging.path = /var/tmp/
Shell

使用下面显示的属性指定自己的日志文件名 -

logging.file = /var/tmp/mylog.log
Shell
注意 - 文件将在达到 10MB后自动旋转生成。

日志级别

Spring Boot支持所有记录器级别,例如:TRACEDEBUGINFOWARNERRORFATALOFF。在application.properties 文件中定义Root logger,如下所示 -

logging.level.root = WARN
Shell
注 - Logback不支持“FATAL”级别日志。 它映射到“ERROR”级别日志。

配置Logback

Logback支持基于XML的配置来处理Spring Boot Log配置。日志配置详细信息在logback.xml文件中配置。logback.xml文件应放在classpath下。 可以使用下面给出的代码在Logback.xml文件中配置ROOT级别日志 -

<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
   <root level = "INFO">
   </root>
</configuration>
Shell

在下面给出的Logback.xml文件中配置控制台appender

<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
   <appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender"></appender>
   <root level = "INFO">
      <appender-ref ref = "STDOUT"/> 
   </root>
</configuration>
XML

使用下面给出的代码在Logback.xml文件中配置文件appender。 请注意,需要在文件追加器中指定日志文件路径。

<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
   <appender name = "FILE" class = "ch.qos.logback.core.FileAppender">
      <File>/var/tmp/mylog.log</File>
   </appender>   
   <root level = "INFO">
      <appender-ref ref = "FILE"/>
   </root>
</configuration>
Shell

使用下面给出的代码在logback.xml文件中定义日志模式。还使用下面给出的代码在控制台或文件日志附加程序中定义支持的日志模式集 -

<pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
Shell

完整的logback.xml文件的代码如下所示。必须将其放在类路径中。

<?xml version = "1.0" encoding = "UTF-8"?>
<configuration>
   <appender name = "STDOUT" class = "ch.qos.logback.core.ConsoleAppender">
      <encoder>
         <pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
      </encoder>
   </appender>

   <appender name = "FILE" class = "ch.qos.logback.core.FileAppender">
      <File>/var/tmp/mylog.log</File>
      <encoder>
         <pattern>[%d{yyyy-MM-dd'T'HH:mm:ss.sss'Z'}] [%C] [%t] [%L] [%-5p] %m%n</pattern>
      </encoder>
   </appender>

   <root level = "INFO">
      <appender-ref ref = "FILE"/>
      <appender-ref ref = "STDOUT"/> 
   </root>
</configuration>
XML

下面给出的代码显示了如何在Spring Boot主类文件中添加slf4j logger。

package com.yiibai.demo;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {
   private static final Logger logger = LoggerFactory.getLogger(DemoApplication.class);

   public static void main(String[] args) {
      logger.info("this is a info message");
      logger.warn("this is a warn message");
      logger.error("this is a error message");
      SpringApplication.run(DemoApplication.class, args);
   }
}
Java

在控制台窗口中看到的输出显示在此处 -

ce5044a78f783b70adbc5419fd61ce8b.png

在此处显示日志文件中显示的输出 -

77e091df205c518e8578cb73b037d580.png
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值