栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot日志框架的使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot日志框架的使用

文章目录
      • 日志
      • JUL
      • log4j

日志

在 Java 日志框架的生态中,存在多种的日志实现框架。例如说:

  • JUL

    Java 自带 java.util.logging 组件的简称

  • Apache Log4j1

  • Apache Log4j2

  • Logback

那么,对于 Spring、Hibernate 等框架,会有打日志的需求,那么就需要选择相应的日志框架。但是,它们无论选择任一一个日志框架,可能使用 Spring、Hibernate 等框架的项目,希望选择另外一个日志框架。此时,项目中就需要添加多个日志框架的配置文件,十分麻烦不便

所幸,在 Java 日志框架的生态中,存在多种日志门面框架,基于 Facade Pattern 设计模式的思想,提供通用的日志 API 给调用方,而自己去实现不同日志框架的适配。例如说:

  • SLF4J

    Simple Logging Facade for Java

  • JCL

    Apache Commons Logging

  • jboss-logging

这样就变成,Spring 采用 JCL 日志门面框架,Hibernate 采用 jboss-logging 日志门面框架,而将选择具体的日志实现框架的权利,交给使用者

当然,也有框架,是自己实现简单的日志门面功能。例如说:

  • Dubbo logger 组件
  • MyBatis logging 组件

在 ==Spring Boot ,保持和 Spring 一致,采用 JCL 日志门面框架来记录日志

  • Loggers记录日志
  • Appenders(Handlers)日志输出,文件、控制台等
  • Layouts日志排版`
  • Level日志级别`
  • Filters过滤
JUL

DemoApplicationTests是某个类名

 public static final Logger LOGGER = Logger.getLogger("DemoApplicationTests");

    @Test
    public void testJUL() {
        ConsoleHandler consoleHandler = new ConsoleHandler();
        consoleHandler.setFormatter(new SimpleFormatter());
        consoleHandler.setLevel(Level.ALL);
        LOGGER.addHandler(consoleHandler);
        LOGGER.setLevel(Level.ALL); // 加入等级为info,则只能打印info及以上等级,info  warning 和 severe
        LOGGER.severe("严重");
        LOGGER.warning("警告");
        LOGGER.info("信息");
        LOGGER.fine("详细");
        LOGGER.finer("较详细");
        LOGGER.finest("非常详细");
        
        FileHandler fileHandler = new FileHandler("D:\logs\test.log", true); // 与ConsoleHandler类似
    }

getLogger()里面的参数使用某个具体的类,可以构建父子关系

比如 com.example 和 com.example.demo,此时前者是后者的父类,子类logger可以继承父类logger的配置,java里面有一个RootLogger

并且 每一个logger都是单例的

独立的配置文件

@Test
public void testJUL() throws Exception {

    LogManager manager = LogManager.getLogManager();
    InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("logging.properties");
    manager.readConfiguration(in);
    Logger logger = Logger.getLogger(DemoApplicationTests.class.getName());
    logger.info("info");
}

过滤器

consoleHandler.setFilter(logRecord -> logRecord.getMessage().contains("好"));

        LOGGER.info("信息好");
        LOGGER.warning("警告");
// 表示 带有 "好" 就会打印日志,当然 这里只是举个简单的例子而已
log4j
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/658276.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号