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发送到各自的目的地。
分享到:
相关推荐
在SpringBoot应用中,日志记录是至关重要的,特别是在处理异常时,清晰、精简的异常堆栈信息有助于快速定位问题。本文将详细介绍如何利用logback优化SpringBoot应用中的异常堆栈输出,以提高日志的可读性和实用性。 ...
总结来说,"logback+slf4j打印工具类"是一种在Java项目中实现日志记录的有效方式,通过SLF4J的简洁API和Logback的强大功能,可以轻松地定制日志记录策略,例如每天生成一个日志文件。这种工具类的使用,不仅提高了...
Logback是SLF4J的一个实现,由著名日志框架Log4j的创始人Ceki Gülcü所创建。Logback被认为是比Log4j更高效、功能更强大的日志处理框架。 本文将详细介绍如何使用SLF4J与Logback来输出应用程序的日志,并提供必要...
`postHandle`和`afterCompletion`方法用于在请求完成后清理MDC。 2. **配置拦截器**:接下来,我们创建一个配置类(`InterceptorConfig`),注册刚刚创建的`SessionInterceptor`。通过重写`WebMvcConfigurer`的`...
在 logback 中,Logger 是日志的记录器,把它关联到应用的对应的 context 上后,主要用于存放日志对象,也可以定义日志类型、级别。Appender 主要用于指定日志输出的目的地,目的地可以是控制台、文件、远程套接字...
` 获取日志实例,然后调用相应的方法进行日志记录。 ```java public class MyClass { private static final Logger logger = LoggerFactory.getLogger(MyClass.class); public void myMethod() { logger.info...
SLF4J(Simple Logging Facade for Java)是一个用于各种日志框架的抽象层,如 Logback、Log4j 等,它提供了一种在部署时插入所需日志实现的方式。SLF4J 提供了一套简单的 API,使得开发者能够在不修改代码的情况下...
在`pom.xml`文件中,你需要添加Logback的依赖项,确保如下所示: ```xml <groupId>ch.qos.logback <artifactId>logback-classic ``` 接下来,配置Logback。SpringBoot会查找类路径下的`logback-spring.xml`或`...
- **配置文件修改后自动重新加载**:Logback支持监控配置文件的变化,并在文件发生改变时自动重新加载。 - **直接调用JoranConfigurator**:可以使用`JoranConfigurator`类直接加载配置文件,这对于需要在运行时...
另一种方法是在 logback.xml 配置文件中添加 `scan` 和 `scanPeriod` 属性。`scan="true"` 指定配置文件会被定期检查,一旦有改动就会重新加载。`scanPeriod` 定义了扫描间隔,例如 `6000` 意味着每分钟检查一次。...
2.2.3. 打印方法和基本选择规则 ..................................................................... 9 2.2.4. 获取 Logger...................................................................................
通过`Thread.currentThread().getStackTrace()`,我们可以得到一个`StackTraceElement`数组,从中可以获取到调用栈的详细信息,包括类名、方法名和行号。 2. **控制日志输出**:LOG封装往往包含开关机制,允许...
在我们调用logger.info(), logger.debug()等日志打印方法时,打印的内容格式与配置文件中的pattern格式一致。例如,在logback.xml配置文件中指定了日志打印格式:%d{HH:mm:ss.SSS} %-5level [%thread][%logger{0}-%L...
- **打印方法**:Logback 提供了多种方法来记录日志,如 `debug`、`info`、`warn`、`error` 等。 - **选择规则**:记录日志时,会根据 Logger 的级别以及消息的级别来判断是否应该记录这条日志。 ##### 2.2.4 获取 ...
在Spring框架中,AOP通过使用代理模式实现,可以拦截并增强方法调用,而无需修改方法本身。在本例中,`@OperationLog`注解会触发一个切面,该切面会在方法执行前后记录日志。 3. **SysLogs.java**: 这个文件可能...
在这个主题中,我们将深入探讨如何在SpringBoot项目中发布cxf接口,并集成logback进行日志管理。 首先,SpringBoot是由Pivotal团队维护的开源框架,它简化了Spring应用程序的创建和配置过程。通过自动配置和“即插...
最后,我们通过Java对象来调用Java方法,并将结果打印出来。 在实际应用中,Python调用Java的JAR包方法有很多优势。首先,Python语言的灵活性和灵活性使得我们可以快速开发和测试程序,而Java语言的稳定性和安全性...
3. 在代码中使用`SLF4J`的`LoggerFactory`获取logger对象,然后调用相应的方法(如`logger.info("信息")`,`logger.debug("调试信息")`)记录日志。 4. 根据配置,日志会被输出到指定的位置,如控制台或日志文件。 ...
我在logging的基础上实现了一个类似于Java的logback的logger打印工具,实现比较简单,能够应对一些简单的logger打印需求,希望对大家能有帮助。下面话不多说了,来一起看看详细的介绍: LoggerFactory 该类用作生成...
在实践中,我们应遵循良好的日志编写规范,包括清晰的时间戳、线程信息、调用堆栈等,以提高日志的可读性和分析性。 【存储与数据库】 存储涉及到数据的保存和访问,这通常涉及到数据库的选择和使用。数据库类型...