首页
学习
活动
专区
圈层
工具
发布

log.error()底层到底做了些啥?

locationAwareLogger.log函数了,其中message.getFormattedMessage()函数是用来将日志中{}和参数对应上,返回我们要打印的日志String,我们先来看看message.getFormattedMessage...,接下来就是将日志输出到我们配置的文件中或者打印到控制台上面。...节点,一直循环到父节点为null的时候,会进入aai.appendLoopOnAppenders(event)函数中,此函数就是将所有级别的日志全部输出指定位置,我们来具体看一下它的实现。...,最后的结果是将事件放入blockingQueue阻塞队列中(BlockingQueue blockingQueue)。...} } 我们可以很明显的看到这个函数中就是将字符串输出到磁盘中,我们进入writeBytes(byteArray)看一下,此函数是否就是通过io流将日志打印到磁盘中。

1.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    log4net原理解析

    如果验证level通过之后,会初始化一个LoggingEvent对象。这个对象包含了你所关心的信息,之后的步骤就都针对LoggingEvent对象来处理了。...我们看一下LoggingEvent类图: ? 从上图中可以看到,LoggingEvent类中定义了RenderedMessage属性,这个属性的返回值会最后输出在日志里。...初始化完成LoggingEvent对象之后,Logger传递LoggingEvent对象给Appenders,并委托Appenders来处理接下来的步骤。...代码大致如下: var loggingEvent = new LoggingEvent(...); CallAppenders(loggingEvent); Logger里面的Appenders是如何管理的...最后,给出Repository、Appender、Filter、Layout、Render的关系简图: ? 下一片文章将主要写,如何在项目中运用log4net,谢谢观看!

    1.9K10

    打印日志时 Logback 内部都做了些什么

    LoggingEvent LoggingEvent 表示日志事件的概念,其中包括了所有与打印日志请求相关的参数,如当前请求线程、当前时间、消息内容、请求级别等。...3.2.3 创建 LoggingEvent 对象 只有到了这一步,logback 才会创建 LoggingEvent 对象,该对象包含所有与请求相关的参数,如请求用的 logger、请求级别、消息、请求携带的异常...3.2.4 调用 appenders 的 doAppend() 方法 在创建 LoggingEvent 对象以后,logback 将调用所有可用 appender 的 doAppend()方法,进行日志输出...() 方法将日志事件格式化为字符串。...4.1 基于文件大小滚动 如果当前日志文件大小超过了设置的 maxFileSize,会触发一次翻转操作,将当前文件归档,同时创建一个新的活动文件,用来输出日志。

    1.5K10

    从零实现一个日志框架(带源码)

    本文带你从零开始,一步一步的设计一个日志框。 输出内容 - LoggingEvent 提到日志框架,最容易想到的核心功能,那就是输出日志了。...现在将输出功能抽象成一个组件“输出器” - Appender,这个Appender组件的核心功能就是输出,下面是Appender的实现代码: public interface Appender {...所以在filterAndLog时,默认都会使用Root Logger的appender和level来进行输出 现在将filterAndLog方法调整一下,增加向上调用的逻辑: private LogcLogger...ClassNotFoundException, InstantiationException { //do parse... } } 解析时,装配LoggerContext,将配置中的...static LoggerContext getDefautLoggerContext(){ return DEFAULT_LOGGER_CONTEXT; } } 现在还差一步,将加载配置文件的方法嵌入

    44630

    从头分析一则traceId穿透问题(附解决方案)

    它们的工作模式不外乎是客户端在同一个trace的不同span上采点上传到server端然后server端进行存储后以web界面的形式将整个链路以traceId和spanId进行关联起来就形成了整个调用链路...下面将涉及到的方法按照调用顺序罗列如下: Appender中的操作和LogEvent对象的创建 第一步来看一下ch.qos.logback.classic.Logger#buildLoggingEventAndAppend...callAppenders(le); } 这里主要涉及到两步:创建LoggingEvent和callAppenders操作,这里有兴趣的可以去看下callAppenders方法,这里我们主要关注一下我们配置的...,false] 47692 - [io-19380-exec-2] c.d.b.r.b.s.impl.RecommendServiceImpl 重点解释一下日志中的 [appname,traceId,spanId...改动之后,异步线程池的日志输出如下: 2020-09-17 17:47:08.727 INFO [recommendEngine,27fceb2f30ea045e,27fceb2f30ea045e,false

    6.5K21

    SpringBoot 用的 spring-jcl 打印日志,与 LoggingSystem 有鸡毛关系?

    final Level level, final String msg, final Object[] params, final Throwable t) { LoggingEvent...le = new LoggingEvent(localFQCN, this, level, msg, t, params); le.setMarker(marker); callAppenders...:从源码来理解slf4j的绑定,以及logback对配置文件的加载),执行完之后,我们看下 LoggerContext 的 objectMap 简单来说,就是将日志配置文件 (logback.xml)加载到了...LoggerContext 的 objectMap 中;我们再回到 Spring Boot 的 LoggingSystem,以 LoggingApplicationListener#onApplicationEnvironmentPreparedEvent...补充个问题 将 logback.xml 重命名成 logback-spring.xml,为什么 Spring Boot 的日志以及我们的业务日志都能正常打印,并且与使用 logback.xml 时一样

    33110

    【RL-TCPnet网络教程】第30章 RL-TCPnet之SNTP网络时间获取

    单播模式,这个参数就是远程NTP服务器的IP地址。 广播模式,这个参数是局域网内NTP服务器的IP地址,如果用户设置了指定的IP地址,那么将仅接收此服务器的消息,其它服务器的消息忽略。...如果此IP地址被设置为0.0.0.0,那么将接收局域网内任何NTP服务器的消息。...返回__FALSE,单播模式下表示发送失败,广播模式下表示UDP Socket打开失败。...使用这个函数要注意以下问题: 如果用户将第1个参数设置为NULL的话,那么将使用Net_Congfig.c文件中设置的NTP服务器地址。...用于配置默认的保持连接时间,即我们常说的Keep Alive时间,如果时间到了将断开连接。常用于HTTP Server,Telnet Server等。

    3.9K20
    领券