springboot日志以文件形式输出

本文介绍了如何在SpringBoot中将日志以文件形式输出,详细讲解了默认日志情况及如何通过xml配置文件实现日志的级别划分并分别保存。通过logging.config属性指定自定义的日志配置文件,推荐使用logback-spring.xml以利用Spring Boot的特性。

前言

今天是2019–8-10,周六,早上醒来打开朋友圈,朋友圈里都在发台风“利奇马”肆虐之后的惨象,我打开窗帘,外面阳光灿烂,庆幸自己所在的城市没有台风,揉了揉眼睛后就转身去煮了两个鸡蛋,再吃了些昨晚买的没吃完的葡萄,然后拿起前几天在广州图书馆借的关于springboot的书。刚好看到springboot的日志输出,但是书里面说的很不详细,不是我想要看的内容,我想学习它,自己公司的项目里也有这样的日志配置,但是自己都看不懂,于是乎,作为一位面向百度编程的初级程序员的我,打开了百度,在搜索输入框输入了“springboot日志配置”。既然学了,就把它记录下来,以后还能温故。嘻嘻。


正文

1 springboot默认日志

springboot在默认情况下,会使用logback来记录日志,并且以info级别及以上输出到控制台中,在我们springboot应用启动的时候,就可以看到对应的日志输出。
在这里插入图片描述

2 日志以文件形式输出

在企业开发中,日志的记录尤为重要,是程序员分析bug的重要信息来源,而日志输出到控制台自然没办法收集到日志信息,这就需要我们把日志输出到文件中保存起来,方便我们查看。
在springboot中可以在application.yml中配置logging.config来根据不同的运行环境输出不同的日志,但是用xml的形式配置更加灵活。这里记录的是xml形式配置日志输出。

  • xml文件加载
    根据不同的日志系统,你可以按如下规则组织配置文件名,就能被正确加载:
    Logback: logback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy
    Log4j: log4j-spring.properties, log4j-spring.xml, log4j.properties, log4j.xml
    Log4j2: log4j2-spring.xml, log4j2.xml
    JDK (Java Util Logging): logging.properties
    Spring Boot 官方推荐优先使用带有 -spring 的文件名作为你的日志配置(如使用 logback-spring.xml ,而不是 logback.xml ),命名为 logback-spring.xml 的日志配置文件, spring boot 可以为它添加一些 spring boot 特有的配置项。
    默认的命名规则,并且放在 src/main/resources 下面即可
    如果你即想完全掌控日志配置,但又不想用 logback.xml 作为 Logback 配置的名字, application.yml 可以通过 logging.config 属性指定自定义的名字:
    logging.config=classpath:logging-config.xml
    虽然一般并不需要改变配置文件的名字,但是如果你想针对不同运行时 Profile 使用不同的日志配置,这个功能会很有用。
    一般不需要这个属性,而是直接在 logback-spring.xml 中使用 springProfile 配置,不需要 logging.config 指定不同环境使用不同配置文件。 springProfile 配置在下面介绍。[^1]
  • xml文件配置
节点
属性
说明
root level root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性。
level:用来设置打印级别,日志级别有:TRACE,DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不区分大小写,不能设置为INHERITED或者同义词NULL。默认的级别是DEBUG。
可以包含零个或多个元素,标识这个appender将会添加到日志输出中。
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
	<root level="INFO">  <!-- 指定最基础的日志输出级别 -->
		<appender-ref  ref="console" />
	</root>	
</configuration>
节点
属性
说明
configuration 每个logger都关联到logger上下文,默认上下文名称为“default”。但可以使用设置成其他名字,用于区分不同应用程序的记录。一旦设置,不能修改,可以通过 %contextName 来打印日志上下文名称,一般来说我们不用这个属性,可有可无。
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
	<contextName>logback_test</contextName><!-- 指定日志输出的上下文名称 -->
	<root level="INFO">  <!-- 指定最基础的日志输出级别 -->
		<appender-ref  ref="console" />
	</root>	
</configuration>
节点
属性
说明
property name
value
用来定义变量值的标签, 有两个属性,name和value;其中name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
	<contextName>logback_test</contextName><!-- 指定日志输出的上下文名称 -->
	<property name="logback.logdir" value="E:/java/log"/>
	<property name="logback.appname" value="testApp"/>
	<root level="INFO">  <!-- 指定最基础的日志输出级别 -->
		<appender-ref  ref="console" />
	</root>	
</configuration>
节点
属性
说明
appender name
class
appender用来格式化日志输出节点,有两个属性name和class,class用来指定输出策略,常用就是控制台输出策略和文件输出策略,name指定这个appender的名称(在root节点中的appender-ref会引用这个name)
<?xml version="1.0" encoding="UTF-8" ?>
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
	<contextName>logback_test</contextName><!-- 指定日志输出的上下文名称 -->
	<property name="logback.logdir" value="E:/java/log" />
	<property name="logback.appname" value="testApp" />
	<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender"><!--输出到控制台 ConsoleAppender -->
		<!--展示格式 layout -->
		<layout class="ch.qos.logback.classic.PatternLayout">
			<pattern>%d{yyyy-MM-dd HH:mm:ss} %contextName ${logback.appname} [%thread] %-5level %logger{36}.%M %line - %msg%n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值