这篇“如何掌握SpringBoot日志文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何掌握SpringBoot日志文件”文章吧。
SpringBoot日志文件
1. 日志有什么用
日志是程序的重要组成部分,想象一下,如果程序报错了,不让你打开控制台看日志,那么你能找到报错的原因吗。
日志对于我们来说,最主要的用途就是排除和定位问题。除了发现和定位问题之外,我们还可以通过日志实现以下功能:
2. 日志怎么用
Spring Boot项目在启动的时候默认就会有日志的输出,如下图:
通过上述信息我们可以发现:
Spring Boot内置了日志框架
日志默认是打印在控制台上,而控制台的日志是不能被保存的, 如何将日志永久的保存下来?
3. 自定义日志打印
开发者自定义打印日志的实现步骤:
3.1 在程序中得到日志对象
private static final Logger log = LoggerFactory.getLogger(UserController.class);
日志工厂需要将每个类的类型传进去,这样我们才能知道日志的归属类,才能更方便更直观的定位到问题
注意:logger对象属于org.slf4j包下的,不要导错了
3.2 使用日志对象打印日志
日志对象的打印方法有很多种,我们可以使用info方法来输出日志,
@Controller @ResponseBody public class UserController { private static final Logger log = LoggerFactory.getLogger(UserController.class); @RequestMapping("/sayhi") public void sayHi() { log.trace("trace"); log.debug("debug"); log.info("info"); log.warn("warn"); log.error("error"); } }
4. 日志级别
4.1 日志级别有什么用?
日志级别可以帮你筛选出重要的信息,比如设置日志级别为error,那么就可以只看到程序的报错日志了,对于普通的调试日志和业务日志就可以忽略了。从而节省开发者筛选的时间
日志级别可以控制不同环境下,一个程序是否需要打印日志,如开发环境我们需要很详细的信息,而生产环境为了保持性能和安全性就会输出少量的日志,而通过日志级别可以实现此类需求
4.2 日志级别的分类与使用
日志级别分为:
trace: 微量,少许的意思,级别最低
debug:需要调试时候的关键信息打印
info:普通的打印信息(默认日志级别)
warn:警告:不影响使用,但需要注意的问题
日志级别的顺序:
越往上,接收到的信息就越少,如设置了warn就只能接收到warn及其上面的级别
日志级别设置
logging: level: root: error
当存在局部日志级别和全局日志级别设置,那么当访问局部日志时,使用的是局部日志级别。也就是局部日志优先级高于全局日志的优先级
5. 日志持久化
以上的日志都是输出在控制台上,然而生产环境上咱们需要将日志保存下来,以便出现问题之后追溯问题,把日志保存下来的过程叫做持久化
想要将日至持久化,只需要在配置文件中指定日志的存储目录或者是指定日志保存文件名,Spring Boot就会将控制台的日志写到相应的目录或文件下
配置日志文件的保存路径:
logging: file: path: D:\rizhi
保存的路径,当中包含转义字符方面的设置我们可以使用这个/
来作为分割符。
如果坚持使用Windows下的分割符,我们需要使用\
转义字符来转义一下
logging: file: name: D:/rizhi/logger/spring.log
6. 更简单的日志输出–lombok
每次使用LoggerFactory.getLogger很繁琐,且每个类都添加一遍,也很麻烦。这里的lombok是一种更好的日志输出方式
6.1 添加 lombok 依赖
然后再pom.xml页面右键、
最后重新添加依赖就可以了
6.2 输出日志
使用@Slf4j注解,在程序中使用log对象即可输入日志并且只能使用log对象才能输出,这是lombok提供的对象名
6.3 lombok原理解释
lombok 能够打印⽇志的密码就在 target ⽬录⾥⾯,target 为项⽬最终执⾏的代码,查看 target ⽬录我们可以发现:
这里的@Slf4j注解变成了一个对象。
下面是java程序的运行原理:
6.4 lombok更多注解说明
基本注解
注解 | 作用 |
---|---|
@Getter | 自动添加get方法 |
@Setter | 自动添加set方法 |
@ToString | 自动添加toString方法 |
@EqualsAndHashCode | 自动添加equals和hasCode方法 |
@NoArgsConstructor | 自动添加无参构造方法 |
@AllArgsConstructor | 自动添加全属性构造方法,顺序按照属性的定义顺序 |
@NonNull | 属性不能为null |
@requiredArgsConstructor | 自动添加必须属性的构造方法,final + @NonNull的属性为需 |
组合注解:
注解 | 作用 |
---|---|
@Data | @Getter+@Setter+EqualsAndHashCode+@requiredArgsConstructor+@NoArgsConstructor |
日志注解
注解 | 作用 |
---|---|
@Slf4j | 添加一个名为log的对象 |
以上就是关于“如何掌握SpringBoot日志文件”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程之家行业资讯频道。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。