欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

springBoot的日志文件详解,

来源: javaer 分享于  点击 21853 次 点评:183

springBoot的日志文件详解,


目录
  • 一. 自定义日志打印
    • 1. 获取日志对象 
    • 2. 使用日志对象打印日志
    • 3. 日志格式说明 
  • 二. 日志级别 
    • 1. 日志级别的分类和使用
    • 2. 日志级别的设置
  • 三. 日志持久化
    •  四. 更加简单的实现日志打印
      • 五. Lombok的原理

        日志是程序的重要组成部分,主要可以用来定位和排查问题。除此之外,还可以用来:

        1. 记录用户的登录日志,方便分析用户是正常登录还是恶意破解;

        2. 记录系统的操作日志,方便数据恢复和定位操作人;

        3. 记录程序执行时间,方便优化程序和提供数据支持;

        在 springBoot 中内置了日志框架:SLF4J+logback,这两者的关系就类似于JDBC 和 MySQL之间,SLF4J对于日志的多种实现方式做了统一。所以在程序中进行自定义日志输出的时候,也通常是借助于SLF4J框架来输出日志;

        一. 自定义日志打印

        1. 获取日志对象 

         1. 每个类都有自己的日志对象,所以习惯用 private 修饰;

         2. 为了方便调用,习惯用 static 修饰;

         3. 且该日志对象不希望被修改,习惯用 final 修饰;

         4. Logger 是一个接口,无法直接 new 对象,一般借助 LoggerFactory.getLogger 方法获取日志对象;

        private static final Logger log = LoggerFactory.getLogger(类对象);

        注意 Logger 对象要选择 slf4j 包下的!!! 

        2. 使用日志对象打印日志

        使用对应方法来打印对应层级的日志; 

                log.trace("i'm trace");     
                log.debug("i'm debug");    
                log.info("i'm info");
                log.warn("i'm warn");
                log.error("i'm error");

        3. 日志格式说明 

        二. 日志级别 

        日志级别可以帮助我们筛选出重要的信息,可以通过控制日志级别,来让日志内容更加准确明了;

        日志级别可以控制不同环境下,打印出不同的日志内容,例如在开发环境下,需要很多详细的信息,而生产环境下,为了保证性能,一般就会需要较少的日志,此时就可以提供日志级别来实现这个需求; 

        1. 日志级别的分类和使用

        trace:级别最低;

        debug: 调试时候的关键信息打印;

        info:默认的日志级别;

        warn:警告,不影响使用;

        error:错误信息;

        fatal:致命的,因为代码异常导致程序退出执行;

        级别越高,能接收的信息就越少,例如设置为 warn 级别的时候,此时就只能接受 warn,error,fatal 级别的日志了。

        2. 日志级别的设置

        日志级别的设置可以通过配置文件来配置;

        # root 设置了默认级别
        logging:
            level:
                root:error

        也可以针对文件路径来另外设置,例如将 com.example.demo 路径下的日志级别设置为 trace:

        logging:
            level:
                root:
                com:
                    example:
                        demo:trace

        三. 日志持久化

        所谓日志持久化,也就是将日志内容保存下来,因为在生产环境下,通常需要保存好日志文件,方面后续进行追溯;

        同样是在配置文件中进行配置,指定日志文件的存储目录和文件名;

        # 日志保存路径     绝对路径!
        # 只设置name的话,此时路径就和项目的路径是一起的
        # 也可以在 name 的基础上加上路径
        logging:
          file:
        #    path: D:\\test\\
        #    name: springboot.log
            name: D:\\test\\springboot.log

         并且存储的 springboot.log日志文件是实时更新的。日志文件的最大容量是 10MB。

         四. 更加简单的实现日志打印

        使用 @slf4j 注解,前提是要有 Lombok 框架支持; 

        @slf4j 是一个类注解,表示给当前类中添加一个叫做 log 的日志对象(这是 lombok 提供的对象名),此处的 log 对象就是 slf4j 中提供的 Logger 对象;

        @RestController
        @Slf4j  
        public class LoggerController {
            @RequestMapping("/log")
            public String sayHi(){
                log.info("我是 log 的 info");
                log.error("我是 log 的 error");
                return "hello3";
            }
        }

        五. Lombok的原理

        此处再简单补充一下 Lombok 的一些原理知识:Lombok实在编译时期起作用的;

        Lombok在程序中运行时起到的作用就是,使用注解代替,来快捷的实现一些语句。这点可以通过 target 目录来观察;target 为项目最终执行的代码; 

         在 target 中,注解 @slf4j ,就自动的转换为构造日志对象的语句了。

         Lombok 还有很多注解是经常用到的:

        1. @Getter:自动添加 getter 方法

        2. @Setter:自动添加 setter 方法

        3. @ToString:自动添加 toString 方法

        组合注解:@Data:包括 @Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor + @NoArgsConstructor

        到此这篇关于springBoot的日志文件的文章就介绍到这了,更多相关springBoot日志文件内容请搜索3672js教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持3672js教程!

        您可能感兴趣的文章:
        • springboot中引入日志文件生成的配置详解
        • SpringBoot日志文件的实现示例
        • SpringBoot项目创建使用+配置文件+日志文件详解
        • SpringBoot详细讲解日志文件
        • springboot下mybatis-plus如何打印sql日志和参数到日志文件
        • 使用SpringBoot_jar方式启动并配置日志文件
        • Springboot项目保存本地系统日志文件的实现方法
        • springboot+log4j.yml配置日志文件的方法
        相关栏目:

        用户点评