如何解决为什么 LogbackMDC 会跟踪上次操作?
我正在查看 LogbackMDCAdapter 的实现,它跟踪 lastOperation
我不明白这样做的原因,有人知道为什么这样做吗?
还有,为什么需要 duplicateAndInsertNewMap
?
解决方法
根据注释 here 需要复制地图以用于序列化
每次添加一个值时,都会创建一个新的地图实例。这 是确定序列化过程将在 更新的地图,而不是发送对旧地图的引用,因此不允许 远程 logback 组件以查看最新更改。
这是指 ObjectOutputStream
发送对先前编写的对象而不是完整对象的引用的行为,除非使用 writeUnshared 方法。
除非有 get/put
组合,否则为什么可以跳过复制并不直接明显,但显然即使您连续有多个 put
操作,只要仅当在 put/remove
之后立即执行 get
时才复制地图。所以这是一个 performance optimization 以避免在放入多个项目时不必要地复制地图。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。