`

Logback在调用打印方法后所做的事

阅读更多
1. 取得过滤链(filter chain)的判定结果
如果TurboFilter链存在,它将被调用。Turbo filters能够设置一个上下文范围内的临界值,这个临界值或者表示过滤某些与信息有关(比如Marker、级别、Logger、消息)的特定事件,或者表示与每个记录请求相关联的Throwable。如果过滤链的结果是FilterReply.DENY,则记录请求被抛弃。如果结果是FilterReply.NEUTRAL,则继续下一步,也就是第二步。如果结果是FilterReply.ACCEPT,则忽略过第二步,进入第三步。

2. 应用基本选择规则
Logback对logger的有效级别与请求的级别进行比较。如果比较的结果是记录请求被禁用,logback会直接抛弃请求,不做任何进一步处理。否则,继续下一步。

3. 创建LoggingEvent对象
记录请求到了这一步后,logback会创建一个ch.qos.logback.classic.LoggingEvent对象,该对象包含所有与请求相关的参数,比如请求用的logger、请求级别、消息、请求携带的异常、当前时间、当前线程、执行记录请求的类的各种数据,还有MDC。注意有些成员是延迟初始化的,只有当它们真正被使用时才会被初始化。

4. 调用appender
创建了LoggingEvent对象后,logback将调用所有可用appender的doAppend()方法,这就是说,appender继承logger的上下文。所有appender都继承AppenderBase抽象类,AppenderBase在一个同步块里实现了doAppend方以确保线程安全。AppenderBase的doAppender()方法也调用appender关联的自定义过滤器,如果它们存在的话。

5. 格式化输出
那些被调用了的appender负责对记录事件(LoggingEvent)进行格式化。然而,有些但不是全部appender把格式化记录事件的工作委托给layout。Layout对LoggingEvent实例进行格式化,然后把结果以字符串的形式返回。注意有些appender,比如SocketAppender,把记录事件进行序列化而不是转换成字符串,所以它们不需要也没有layout。

6. 发送记录事件(LoggingEvent)
记录事件被格式化后,被各个appender发送到各自的目的地。
分享到:
评论

相关推荐

    logback+slf4j打印工具类

    总结来说,"logback+slf4j打印工具类"是一种在Java项目中实现日志记录的有效方式,通过SLF4J的简洁API和Logback的强大功能,可以轻松地定制日志记录策略,例如每天生成一个日志文件。这种工具类的使用,不仅提高了...

    logback配置详解

    在 logback 中,Logger 是日志的记录器,把它关联到应用的对应的 context 上后,主要用于存放日志对象,也可以定义日志类型、级别。Appender 主要用于指定日志输出的目的地,目的地可以是控制台、文件、远程套接字...

    logback+web项目Demo

    ` 获取日志实例,然后调用相应的方法进行日志记录。 ```java public class MyClass { private static final Logger logger = LoggerFactory.getLogger(MyClass.class); public void myMethod() { logger.info...

    logback介绍

    SLF4J(Simple Logging Facade for Java)是一个用于各种日志框架的抽象层,如 Logback、Log4j 等,它提供了一种在部署时插入所需日志实现的方式。SLF4J 提供了一套简单的 API,使得开发者能够在不修改代码的情况下...

    采用slf4j+logback输出日志

    Logback是SLF4J的一个实现,由著名日志框架Log4j的创始人Ceki Gülcü所创建。Logback被认为是比Log4j更高效、功能更强大的日志处理框架。 本文将详细介绍如何使用SLF4J与Logback来输出应用程序的日志,并提供必要...

    SpringBoot-logback

    在`pom.xml`文件中,你需要添加Logback的依赖项,确保如下所示: ```xml <groupId>ch.qos.logback <artifactId>logback-classic ``` 接下来,配置Logback。SpringBoot会查找类路径下的`logback-spring.xml`或`...

    在SpringBoot中使用logback优化异常堆栈的输出.doc

    在SpringBoot应用中,日志记录是至关重要的,特别是在处理异常时,清晰、精简的异常堆栈信息有助于快速定位问题。本文将详细介绍如何利用logback优化SpringBoot应用中的异常堆栈输出,以提高日志的可读性和实用性。 ...

    Logback用户手册中文版

    2.2.3. 打印方法和基本选择规则 ..................................................................... 9 2.2.4. 获取 Logger...................................................................................

    Spring如何动态自定义logback日志目录详解

    在我们调用logger.info(), logger.debug()等日志打印方法时,打印的内容格式与配置文件中的pattern格式一致。例如,在logback.xml配置文件中指定了日志打印格式:%d{HH:mm:ss.SSS} %-5level [%thread][%logger{0}-%L...

    方法日志打印.rar

    在Spring框架中,AOP通过使用代理模式实现,可以拦截并增强方法调用,而无需修改方法本身。在本例中,`@OperationLog`注解会触发一个切面,该切面会在方法执行前后记录日志。 3. **SysLogs.java**: 这个文件可能...

    python调用java的jar包方法

    最后,我们通过Java对象来调用Java方法,并将结果打印出来。 在实际应用中,Python调用Java的JAR包方法有很多优势。首先,Python语言的灵活性和灵活性使得我们可以快速开发和测试程序,而Java语言的稳定性和安全性...

    很好用的LOG封装,可同时输出类名,方法名,行数,可控制输出不输出

    通过`Thread.currentThread().getStackTrace()`,我们可以得到一个`StackTraceElement`数组,从中可以获取到调用栈的详细信息,包括类名、方法名和行号。 2. **控制日志输出**:LOG封装往往包含开关机制,允许...

    log基础内容讲解,打印输出内容

    3. 在代码中使用`SLF4J`的`LoggerFactory`获取logger对象,然后调用相应的方法(如`logger.info("信息")`,`logger.debug("调试信息")`)记录日志。 4. 根据配置,日志会被输出到指定的位置,如控制台或日志文件。 ...

    Python实现Logger打印功能的方法详解

    我在logging的基础上实现了一个类似于Java的logback的logger打印工具,实现比较简单,能够应对一些简单的logger打印需求,希望对大家能有帮助。下面话不多说了,来一起看看详细的介绍: LoggerFactory 该类用作生成...

    日志打印工具

    在IT行业中,日志打印工具扮演着至关重要的角色,它主要负责收集、记录和分析应用程序在运行过程中的各种事件和信息。这些事件可以是错误、警告、调试信息、性能数据等,为开发者提供了宝贵的诊断和优化依据。下面将...

    slf4j-jarBao.zip

    在使用SLF4J时,需要与具体的日志实现库(如logback或log4j)结合,通过引入相应的绑定器(binding)JAR来实现实际的日志打印。 在SLF4J中,"nop"标签可能指的是"No Operation"的日志实现,这是一个空的日志实现,...

    SpringBoot WebService cxf接口发布以及logbok日志集成

    在这个主题中,我们将深入探讨如何在SpringBoot项目中发布cxf接口,并集成logback进行日志管理。 首先,SpringBoot是由Pivotal团队维护的开源框架,它简化了Spring应用程序的创建和配置过程。通过自动配置和“即插...

    Helloworld.zip

    这个例子的核心功能是 "调用logback输出日志"。Logback 是一个开源的日志框架,由 Ceki Gülcü 创建,作为 log4j 的后继者。Logback 提供了高效且灵活的日志记录功能,广泛应用于 Java 应用程序中。它的主要组件...

    java-操作记录-对比操作前后不同

    例如,使用Log4j,我们可以创建一个Logger实例,然后调用其debug()、info()、warn()等方法来记录不同级别的信息。 ```java import org.apache.log4j.Logger; public class OperationRecorder { private static ...

    Spring 打印机

    6. **AOP(面向切面编程)**:Spring的AOP支持可以用于统一处理日志,通过定义切面(Aspect)可以在方法调用前后自动记录日志,而无需在每个方法中手动添加日志代码。 7. **Spring Boot与日志**:在Spring Boot项目...

Global site tag (gtag.js) - Google Analytics