文档章节

spring-boot | 日志

JAVA_冯文议
 JAVA_冯文议
发布于 2018/08/17 18:44
字数 1076
阅读 25
收藏 0

嘿,好久不见,你还好吗?

我一般都是为大家带来项目上比较实用的东西,这次我们来试试项目开发中对日志的处理,希望对你有所帮助。

理论知识

1、为什么要用日志?

你是否因为项目出现问题,查找日志文件定位错误花费N多时间,为此苦不堪言?

2、Spring Boot 默认集成Logback。日志输出内容元素具体如下:

  • 时间日期:精确到毫秒
  • 日志级别:ERROR, WARN, INFO, DEBUG or TRACE
  • 进程ID
  • 分隔符:— 标识实际日志的开始
  • 线程名:方括号括起来(可能会截断控制台输出)
  • Logger名:通常使用源代码的类名
  • 日志内容

3、日志级别从低到高分为:

TRACE < DEBUG < INFO < WARN < ERROR < FATAL

4、根据不同的日志系统,你可以按如下规则组织配置文件名,就能被正确加载:

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特有的配置项。

理论知识很重要!!! 虽说实践出真知,但是没有理论做支持,实践只能是盲目的瞎摸,所以,在学好理论的前提下,结合实践,就能更好的为我们服务。

以前在写项目的时候,用的是Log4j,那时候就感觉他很强大,日志滚动啊,日志保存期限啊,设置最大存储量,异常发送邮件,等等功能。 总之,log很强大,他能帮助我们解决很多很多的问题。

实际开发

日志功能如此强大,那我们怎么在项目中如何配置,又该如何使用呢?

先申明: 我这里是用Spring Boot搭建的项目,版本是2.x, 有可能你用的是Struts2+Spring+SpringMVC,等等之类的框架搭建。 我想说的是,推荐使用Spring Boot,你也可以将你的SS*项目改成Spring Boot。 如果你有好的建议也可以push给我,我们一起交流,学习。

1、我们先看项目目录:

项目目录

2、在 application.yml中需要这样配置以下内容:

spring:
  profiles:
    active: dev
logback:
  appName: examplelog
  fileType: out

3、在 -dev.yml, -test.yml, -prod.yml 中需要添加以下配置:

logback:
  logDir: log/dev

logging:
  level:
    com.fengwenyi.log: debug
    com.fengwenyi.log.service: error

4、我们来看一下 logback-spring.xml 写法:

请参见源码

5、他有什么功能呢?

  • 日志可以输出到指定文件
  • 日志可以按运行环境进行输出
  • 日志可以按日期进行输出
  • 不同包可以指定不同的输出级别

下面我们详细说明一下:

程序运行环境

他会根据你的配置生成对应的目录,来存放相应的日志文档,方便我们查询。比如,开发时,我们看dev,测试人员看test,上线运行,运维人员看 prod,这样的好处是,我们不仅可以方便查询错误定位,也可以设置不同的输出级别。像酱紫

日志样式

是不是很清晰? 另外,他外按日期,每天一个文档,是不是很贴心? 保存多久由你定。 是不是快要感动哭了? 那就 star 一下吧,谢谢咯。

API

还是简单说一下配置问题吧:

第一步,你要将 logback-spring.xml,放到跟我相同的目录,内容,可以复制过去,也可以适当修改。

第二步,application.yml

logback:
  appName: examplelog # 日志文件前缀
  fileType: out # 日志后缀名

第三步,application-dev.yml,-test.yml,-prod.yml

logback:
  logDir: log/dev # 日志目录

logging:
  level:
    # 日志级别配置,格式:(包名: 级别)
    com.fengwenyi.log: debug 
    com.fengwenyi.log.service: error

参考文档

[1] SpringBoot进阶教程 | 第二篇:日志组件logback实现日志分级打印

[2] Spring Boot 日志配置(超详细)

[3] 本节源码

© 著作权归作者所有

共有 人打赏支持
JAVA_冯文议
粉丝 9
博文 40
码字总数 33285
作品 0
成都
高级程序员
私信 提问
spring boot框架学习4-spring boot核心(3)

本节主要: 1:spring boot 为我们提供的 starter pom 都有哪些 2:怎么添加xml配置文件 3:日志相关 本文是《凯哥陪你学系列-框架学习之spring boot框架学习》中第四篇 spring boot框架学习...

凯哥java
2017/10/31
0
0
Spring Boot日志集成

Spring Boot日志框架 Spring Boot支持Java Util Logging,Log4j2,Lockback作为日志框架,如果你使用starters启动器,Spring Boot将使用Logback作为默认日志框架。无论使用哪种日志框架,Sprin...

java技术栈
2017/11/08
0
0
Spring Boot 自定义日志详解

本节内容基于 Spring Boot 2.0. 你所需具备的基础 什么是 Spring Boot? Spring Boot 核心配置文件详解 Spring Boot 开启的 2 种方式 Spring Boot 自动配置原理、实战 Spring Boot 2.x 启动全...

Java技术栈
2018/11/16
0
0
基于 Spring Boot 的研发框架 - SOFABoot

SOFABoot 是蚂蚁金服开源的基于 Spring Boot 的研发框架,它在 Spring Boot 的基础上,提供了诸如 Readiness Check,类隔离,日志空间隔离等等能力。在增强了 Spring Boot 的同时,SOFABoot ...

匿名
2018/04/19
0
6
Spring Boot整合MyBatis学习总结

公司的很多项目都陆陆续续引入了Spring Boot,通过对Spring Boot的接触了解发现其真的是大大地简化了开发、简化了依赖配置,很多功能注解一下就可以实现,真的是太方便了。下面记录了一个Spr...

zhuwensheng
2018/06/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

深度学习为图片人物换装【python代码教程】

在观看本文之前,请答应我要善良。昨天预告了下,发现很多同学对这个模型都表示出兴趣,甚至有好多同学后台发来照片让我帮他们脱裤子。授人以鱼不如授人以渔,请这些同学好自为之~ 01效果演示...

阿里云官方博客
25分钟前
2
0
centos7安装RabbitMQ详细过程

由于RabbitMQ是基于Erlang语言开发,所以在安装RabbitMQ之前,需要先安装Erlang 1、环境: centos 7.1 内核版本3.10.0-229.el7.x86_64 Erlang 19.0.4版本 RabbitMQ 3.6.14版本 2、在线安装E...

秋至丶枫以落
56分钟前
1
0
6个使用KeePassX保护密码的技巧

虽然安全是个深奥的主题,但是你可以遵循几个简单的日常习惯来减小攻击面。本文将解释确保密码信息安全的重要性,并给出如何充分利用KeePassX的建议。 日益互联的数字世界使安全成为一个重要...

Linux就该这么学
57分钟前
1
0
UnsatisfiedLinkError sawindbg.dll

方法:搜索sawindbg.dll,然后将文件报错的目录下

洛水
今天
5
0
说说不知道的Golang中参数传递

本文由云+社区发表 导言 几乎每一个C++开发人员,都被面试过有关于函数参数是值传递还是引用传递的问题,其实不止于C++,任何一个语言中,我们都需要关心函数在参数传递时的行为。在golang中...

腾讯云加社区
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部