springboot 整合logback

1.application.properties新增配置

server.port=8080

2.新增AppConfig.java 文件

package com.lb.springboot.config;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

/**
 * 应用自定义配置
 * @author lb
 */
@Configuration
@ComponentScan(value = {"com.lb.springboot.**"})
@PropertySource("classpath:application-myconfig.properties")
public class AppConfig {
	
	private static final Logger LOGGER = LoggerFactory.getLogger(AppConfig.class);
 // 加载服务端口配置
	@Value("${server.port}")
	private String serverPort;
	
	public void outprint() {
		LOGGER.info("logback - 加载配置 - serverPort: {}",serverPort);
	}
}

3. 修改 Application.java

替换main方法的内容为:

ConfigurableApplicationContext ctx = SpringApplication.run(Application.class, args);
		// 测试Logback打印配置
		AppConfig appConfig = ctx.getBean(AppConfig.class);
		appConfig.outprint();

4. 新增logback.xml文件

  • 需要将logback.xml放入项目的 /src/main/resources/目录下

内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!-- 
	scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true 
	scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。
	debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。
-->
<configuration scan="true" scanPeriod="30 seconds" debug="false" >
	<!-- 每个logger都关联到logger上下文,默认上下文名称为default。但可以使用<contextName>设置成其他名字,用于区分不同应用程序的记录。一旦设置,不能修改。 -->
	<contextName>springboot-quickstart-002</contextName>
	<!-- 通过<property>定义的值会被插入到logger上下文中。定义变量后,可以使"${}"来使用变量	 -->
	<property name="logback.path" value="/Users/yunnasheng/Desktop/logs" />
	<property name="logback.level" value="INFO" />
	<property name="logback.additivity" value="true" />
	<!--格式化输出:%d表示日期,%t表示线程名,%-5p:级别从左显示5个字符宽度   %m:日志消息,%n是换行符--> 
	<property name="logback.pattern" value="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p - %m%n" />	
	<!-- %d [%t] %-5p %c.%M[%L] - %m%n -->
	<!-- %d{yyyy-MM-dd HH:mm:ss} [%thread]  %-5level %logger{50} - %msg%n -->	

	<!-- 
		<appender>是<configuration>的子节点,是负责写日志的组件 
		<appender>有两个必要属性name和class。name指定appender名称,class指定appender的全限定名。
		ConsoleAppender:把日志添加到控制台,有以下子节点:
		<encoder>:对日志进行格式化。
		<target>:字符串  System.out 或者 System.err	默认 System.out	
	-->
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
		<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
			<charset>UTF-8</charset>
    		<layout class="ch.qos.logback.classic.PatternLayout">
      			<pattern>${logback.pattern}</pattern>
    		</layout>
  		</encoder>
	</appender>

	<!-- 
		FileAppender:把日志添加到文件,有以下子节点
 		<file>:被写入的文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值。
		<append>:如果是 true,日志被追加到文件结尾,如果是 false,清空现存文件,默认是true。
		<encoder>:对记录事件进行格式化。
		<prudent>:如果是 true,日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低,默认是 false。	
	 -->	
	<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!--日志文件输出的文件名-->
			<FileNamePattern>${logback.path}/springboot-quickstart-002.%d{yyyy-MM-dd}.log</FileNamePattern>
			<MaxHistory>30</MaxHistory>
		</rollingPolicy>
		<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
    		<charset>UTF-8</charset>
    		<layout class="ch.qos.logback.classic.PatternLayout">
      			<pattern>${logback.pattern}</pattern>
    		</layout>
  		</encoder>
	</appender>
	
	<appender name ="ANSY_FILE" class= "ch.qos.logback.classic.AsyncAppender">
		<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 --> 
		<discardingThreshold >0</discardingThreshold>
		<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 --> 
		<queueSize>256</queueSize>
		<appender-ref ref ="FILE"/>
	</appender>
	
	<logger name="org.springframework" level="INFO"/>
    <logger name="org.apache" level="ERROR"/>
    <logger name="java.sql" level="ERROR"/> 
       
    <!-- 
    	<root> 也是<loger>元素,但是它是根loger。只有一个level属性,应为已经被命名为"root" 
    	level: 用来设置打印级别,大小写无关:TRACE < DEBUG < INFO < WARN < ERROR, ALL 和 OFF,不能设置为INHERITED或者同义词NULL。 默认是DEBUG
    	<loger>和<root>可以包含零个或多个<appender-ref>元素,标识这个引用的appender将会被添加到这个loger中。
    -->
	<root level="${logback.level}">
		<appender-ref ref="STDOUT" />
		<appender-ref ref="ANSY_FILE" />
	</root>
</configuration>

5. 启动测试

控制台打印如下,关键日志 logback - 加载配置 - serverPort: 8080


  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.3.7.RELEASE)

2020-12-14 18:43:23 [main] INFO  - Starting Application on yunnashengdeMacBook-Pro.local with PID 26117 (/Users/yunnasheng/work/github-workspace/springboot-quickstart-002/target/classes started by yunnasheng in /Users/yunnasheng/work/github-workspace/springboot-quickstart-002)
2020-12-14 18:43:23 [main] INFO  - No active profile set, falling back to default profiles: default
2020-12-14 18:43:24 [main] INFO  - Tomcat initialized with port(s): 8080 (http)
2020-12-14 18:43:24 [main] INFO  - Root WebApplicationContext: initialization completed in 557 ms
2020-12-14 18:43:24 [main] INFO  - Initializing ExecutorService 'applicationTaskExecutor'
2020-12-14 18:43:24 [main] INFO  - Tomcat started on port(s): 8080 (http) with context path ''
2020-12-14 18:43:24 [main] INFO  - Started Application in 1.027 seconds (JVM running for 1.555)
2020-12-14 18:43:24 [main] INFO  - logback - 加载配置 - serverPort: 8080
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值