springboot入门到精通(七)springboot集成logback日志

导读:本篇文章讲解 springboot入门到精通(七)springboot集成logback日志,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

springboot集成logback日志

目录

1介绍
2springboot初体验
3springboot集成jsp
4springboot属性注入
5springboot集成mybatis
6springboot集成lombok
7springboot集成logback日志
8springboot开启全局热部署
9springboot面向切面编程
10springboot文件上传
11springboot文件下载
12springboot自定义拦截器
13springboot打成war包发布
14springboot打成jar包发布
15springboot自定义banner
16springboot配置文件拆分

logback介绍

Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和l
ogback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。
此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。
logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能。

::: tip 提示
这一节的示例是在第五节springboot集成mybatis
的基础上加的。
:::

日志级别

ALL > DEBUG > INFO > WARN > ERROR > OFF
级别越低,输出日志越多,最低是ALL,所有都输出。最高是OFF,啥都不输出。

  • ALL:所有都输出
  • DEBUG:输出DEBUG及后面所有日志
  • INFO:输出INFO及后面所有日志
  • WARN:输出WARN及后面所有日志
  • ERROR:只输出ERROR级别日志

日志分类

  • 项目根日志:全局日志,一个项目只有一个根日志
  • 项目子日志:包级别的日志,一个项目可以有多个子日志。

没有特别指明的地方都用的是根日志规则,有子日志的地方用的是子日志的规则

使用logback

特点

  • springboot默认集成logback,不用额外引入jar包
  • logback延用了log4j所有语法和规则,熟悉log4j的话学习logback更加轻松,不会也没关系

使用默认配置

如果没有特殊要求,可以不做任何配置,直接使用logback,默认级别是INFO,默认级别只会在控制台打印日志信息。

application.yml中配置logback

如果只是想配置日志级别和日志文件保存路径的话,直接在application.yml中配置,配置方法如下:

logging:
  level:
    root: info # 根日志,默认级别是info,如果使用info,可以不写这一行
    com.moyundong.dao: debug # 子级别日志,可以指定到自己的某个包
  file: d:/log/springboot-test04.log # 定义日志文件的路径,可以是相对路径也可以是绝对路径

效果如下图所示
springboot入门到精通(七)springboot集成logback日志
默认的日志文件能存储10MB内容,大于10MB就会生成一个压缩文件,然后重新记录,压缩文件有以前的日志信息。

自定义logback-spring.xml文件

如果想自由定义日志级别、输出格式、备份日志策略等等,我们就在src/main/resource下面要创建logback-spring.xml文件进行自定义配置。
我这儿有一份配置,大家可以参考使用。先不用明白每一行的原理,只要能根据这份文件修改出自己想要的配置就行。后面想要了解原理,可以再深入学习。

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
	<!--定义日志文件的存储地址目录 -->
	<property name="LOG_HOME" value="D:/log/springboot-test07" />

	<!-- 控制台输出的配置 -->
	<appender name="STDOUT"
		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}:%L - %msg%n</pattern>
		</encoder>
	</appender>

	<!-- 每天生成一个.log日志文件 -->
	<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!--日志文件输出的文件名,我们使用的是路径${LOG_HOME}+文件名(文件名里面加了日期) -->
			<FileNamePattern>${LOG_HOME}/test07.%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}:%L - %msg%n</pattern>
		</encoder>
		<!--日志文件最大的大小,默认是10MB,超过这个就会备份为一个压缩文件 -->
		<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
			<MaxFileSize>10MB</MaxFileSize>
		</triggeringPolicy>
	</appender>

	<!-- 每天生成一个html格式的日志 -->
	<appender name="HtmlFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<!--日志文件输出的文件名 -->
			<FileNamePattern>${LOG_HOME}/test07.%d{yyyy-MM-dd}.html</FileNamePattern>
			<!--日志文件保留天数 -->
			<MaxHistory>30</MaxHistory>
		</rollingPolicy>
		<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
			<layout class="ch.qos.logback.classic.html.HTMLLayout">
				<pattern>%p%d%msg%M%F{32}%L</pattern>
			</layout>
		</encoder>
		<!--日志文件最大的大小 -->
		<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
			<MaxFileSize>10MB</MaxFileSize>
		</triggeringPolicy>
	</appender>

	<!-- 生成html格式的WARN级别日志 -->
	<appender name="WARNHtmlFile" class="ch.qos.logback.core.FileAppender">
		<!-- 过滤器,只记录WARN级别的日志 -->
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>WARN</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>

		<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
			<layout class="ch.qos.logback.classic.html.HTMLLayout">
				<pattern>%p%d%msg%M%F{32}%L</pattern>
			</layout>
		</encoder>
		<file>${LOG_HOME}/WARN-log.html</file>
	</appender>

	<!-- 根日志输出级别 -->
	<root level="INFO">
		<appender-ref ref="STDOUT" />
		<appender-ref ref="FILE" />
		<appender-ref ref="HtmlFile" />
	</root>

	<!--自定义日志级别配置,指定我们项目都是debug级别 -->
	<logger name="com.moyundong" level="debug" />

</configuration>

这份配置文件定义了4个不同类型的输出,一个是控制台输出,3个是文件输出。输出级别可以自定义。

测试

我在SysUserController的findAll方法里面写了4种不同级别的日志,大家可以运行起来试试。
在浏览器输入http://localhost:8088/moyundong/sysUser/findAll来查询数据,看看打印的日志信息。

@RequestMapping("findAll")
    public Object findAll(){
        log.debug("findAll查询debug级别日志信息");
        log.info("findAll查询info级别日志信息");
        log.warn("findAll查询warn级别日志信息");
        log.error("findAll查询error级别日志信息");
        return sysUserService.findAll();
    }

::: tip 提示
如果同时配置了application.ymllogback-spring.xml文件,那么以logback-spring.xml文件为准。
:::

本节示例下载地址:java相关demo下载列表

::: warning
在不同的平台,文档显示的效果是不一样的,最佳最全观看地址:springboot集成logback日志
欢迎大家来博客了解更多内容:java乐园
:::

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/13525.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!