Spring-Boot 默认日志logback配置_Java_t0m的专栏-CSDN博客

标签: | 发表时间:2020-05-09 09:47 | 作者:
出处:https://blog.csdn.net

Spring-Boot官方开发指导文档

 

SpringBoot默认采用了logback日志系统,也支持Log4j2、JDK (Java Util Logging)、SLF4J、Commons Logging等。下面说一下logback日志系统在SpringBoot中的配置。

 

如果日志需求简单,可以直接在application.properties中配置logback日志属性,否则可以自定义logback日志文件位置,然后根据自己需要配置logback内容。下面是一部分常用配置属性:

 

logging.file=xxxx.log  //该属性指定日志文件名称

logging.path=/xxx/xxx   //日志文件存储目录,当前目录 . 。

logging.file.max-size=2MB //单个日志文件大小,

logging.file.max-history=30 //日志文件保存30天的

logging.level.root=INFO //root日志打印级别

logging.level.xxx.xxx.xx=INFO //指定类或者包打印日志级别

 

项目中使用时,private Logger logger = LoggerFactory.getLogger(XXX.class);即可,该Logger为SLF4J的导入类。

 

日志系统在实际项目中一般需要个性化配置,所以可以通过下面的属性指定配置文件位置

logging.config=xxxxx

//该属性配置自定义日志文件位置,如果位于classpath根目录下,则直接填写文件名称即可。本例中使用logback, 位置位于src/main/resources/log下,配置应为:

logging.config=classpath:log/logback-spring.xml

关于logback配置文件名称,springboot官网推荐尽可能不要叫logback.xml,因为该文件在启动时就会加载,加载非常早,会导致配置文件中的springboot标签不识别。所以推荐命名xxxxx-spring.xml形式。

 

在springboot中的logback除了本身的标签外,还增加了<springProfile> 、 <springProperty>标签。

springProfile标签用于区分各个环境下配置文件,在application.properties中配置了spring.profiles.active=xxx后,该标签会加载指定的日志配置文件。

如:logback-spring.xml

 

        <?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true" scan="true" scanPeriod="60 seconds">
		<!-- scan日志刷新 scanPeriod不带单位时,单位为毫秒 -->
	<!-- 控制台输出 -->
	<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} -	%msg%n</pattern>
		</encoder>
	</appender>
		
		<!-- springProfile是springboot标签,可以配置运行时激活的配置 ,
	另外还有springProperty可以读取properties内的属性值应用到logback配置文件中
		-->
	<springProfile name="dev">
		<include resource="log/logback-spring-dev.xml" />
	</springProfile>

	<springProfile name="test">
		<include resource="log/logback-spring-test.xml" />
	</springProfile>

	<springProfile name="pro">
		<include resource="log/logback-spring-pro.xml" />
	</springProfile>

</configuration>

其中logback-spring-dev.xml、logback-spring-test.xml、logback-spring-pro.xml三个配置文件分别是开发、测试、生产环境下的日志配置信息。

 

logback-spring-dev.xml如下:其他不再列举

 

        <?xml version="1.0" encoding="UTF-8"?>
<included>
		<!-- 属性定义使用以及ref参照使用,必须有顺序,使用前必须已定义-->
		
	<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径 -->
	<property name="LOG_HOME" value="D:/logs" />

	<!-- 按照每天生成日志文件 -->
	<appender name="File"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!--日志文件输出的文件名 -->
			<FileNamePattern>${LOG_HOME}/springboot.log.%d{yyyy-MM-dd}.log
			</FileNamePattern>
			<!--日志文件保留天数 -->
			<MaxHistory>30</MaxHistory>
		</rollingPolicy>
		<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
			<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
		</encoder>
		<!--日志文件最大的大小 -->
		<triggeringPolicy
			class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
			<MaxFileSize>2MB</MaxFileSize>
		</triggeringPolicy>
	</appender>
	
		<!-- 可以指定包或者类 -->
		<logger name="com.tom" level="INFO">
			<appender-ref ref="File"></appender-ref>
		</logger>
		
		<!-- 日志输出级别 -->
		<root level="INFO">
			<appender-ref ref="Console" />
		</root>

</included>
 

 

springProperty标签用于读取spring环境中property配置的属性值,springProperty有name属性,与logback中标签property作用类似,可以在配置文件的下文中通过${name}读取值。logback中配置定义有顺序,取值或者引用必须先声明后引用。

官文例子:

 

        <springProperty scope="context" name="fluentHost" source="myapp.fluentd.host"
		defaultValue="localhost"/>
<appender name="FLUENT" class="ch.qos.logback.more.appenders.DataFluentAppender">
	<remoteHost>${fluentHost}</remoteHost>
	....
</appender>

此外,对于logback的变量取值${variableName},还支持默认值设置,比如:${LOG_HOME:-log}, 注意冒号后面要有个短横线  - , 横线后面的就是默认值,此外默认值也支持取定义好的变量如:${LOG_HOME:-${DEF_DIR}}


注意:使用springProperty springProfile标签则logback配置文件命名必须采用logback-spring.xml,否则spring标签不识别,控制台出现no applicable action for [springProperty]...的WARN警告。

另外在logback-spring.xml中用到的properties属性尽量放在bootstrap.yml/properties文件中,bootstrap配置文件会在启动时首先加载,放到applicaiton.yml/properties中不会启动时马上加载,会出现刚开始启动时取不到值过会启动好了才取到值的情况。

 

附: logback

 

相关 [spring boot 日志] 推荐:

Spring-Boot 默认日志logback配置_Java_t0m的专栏-CSDN博客

- -
Spring-Boot官方开发指导文档. SpringBoot默认采用了logback日志系统,也支持Log4j2、JDK (Java Util Logging)、SLF4J、Commons Logging等. 下面说一下logback日志系统在SpringBoot中的配置. 如果日志需求简单,可以直接在application.properties中配置logback日志属性,否则可以自定义logback日志文件位置,然后根据自己需要配置logback内容.

Spring boot传统部署

- - 企业架构 - ITeye博客
使用spring boot很方便,一个jar包就可以启动了,因为它里面内嵌了tomcat等服务器. 但是spring boot也提供了部署到独立服务器的方法. 如果你看文档的话,从jar转换为war包很简单,pom.xml的配置修改略去不讲. 只看source的修改,很简单,只要一个配置类,继承自SpringBootServletInitializer, 并覆盖configure方法.

值得使用的Spring Boot

- - ImportNew
2013年12月12日,Spring发布了4.0版本. 这个本来只是作为Java平台上的控制反转容器的库,经过将近10年的发展已经成为了一个巨无霸产品. 不过其依靠良好的分层设计,每个功能模块都能保持较好的独立性,是Java平台不可多得的好用的开源应用程序框架. Spring的4.0版本可以说是一个重大的更新,其全面支持Java8,并且对Groovy语言也有良好的支持.

Spring Boot配置多个DataSource

- - 廖雪峰的官方网站
使用Spring Boot时,默认情况下,配置 DataSource非常容易. Spring Boot会自动为我们配置好一个 DataSource. 如果在 application.yml中指定了 spring.datasource的相关配置,Spring Boot就会使用该配置创建一个 DataSource.

Spring boot executable jar/war 原理

- - ImportNew
spring boot里其实不仅可以直接以 Java -jar demo.jar的方式启动,还可以把jar/war变为一个可以执行的脚本来启动,比如./demo.jar. 把这个executable jar/war 链接到/etc/init.d下面,还可以变为Linux下的一个service. 只要在spring boot maven plugin里配置:.

Spring Boot Starter是什么?

- - 技术,永无止境
在工作中我们经常能看到各种各样的springboot starter,如spring-cloud-netflix、spring-cloud-alibaba等等. 这些starter究竟有什么作用呢. 在了解这些starter之前,我们需要先大概知道Spring MVC与Spring Boot的关系.

spring boot与spring batch、postgres及elasticsearch整合

- - 互联网 - ITeye博客
当系统有大量数据需要从数据库导入elasticsearch时,使用sping batch可以提高导入的效率. 这篇文章使用spring batch将数据从postgres导入elasticsearch. 本文使用spring data jest连接ES(也可以使用spring data elasticsearch连接ES),ES版本为5.5.3.

Spring Boot使用redis做数据缓存

- - ITeye博客
SysUser.class)); //请注意这里. 3 redis服务器配置. /** *此处的dao操作使用的是spring data jpa,使用@Cacheable可以在任意方法上,*比如@Service或者@Controller的方法上 */ public interface SysUserRepo1 extends CustomRepository {.

spring boot应用启动原理分析

- - ImportNew
在spring boot里,很吸引人的一个特性是可以直接把应用打包成为一个jar/war,然后这个jar/war是可以直接启动的,不需要另外配置一个Web Server. 如果之前没有使用过spring boot可以通过下面的demo来感受下. 下面以这个工程为例,演示如何启动Spring boot项目:.

Apache Shiro和Spring boot的结合使用

- - 企业架构 - ITeye博客
实际上在Spring boot里用Spring Security最合适,毕竟是自家东西,最重要的一点是Spring Security里自带有csrf filter,防止csrf攻击,shiro里就没有. 但是Spring Security有点太复杂,custmize起来比较费力,不如shiro来的简单.