gpt4 book ai didi

Java 应用程序架构 - 需要一个日志名称,希望保持类不耦合

转载 作者:行者123 更新时间:2023-11-30 09:31:00 25 4
gpt4 key购买 nike

我正在使用第三方软件库,其日志原型(prototype)如下:

runtime.getInstance().log(int logtype, String moduleName, String logtext);

我有一个实用程序库,我希望它独立于库,但我也希望能够将我自己的类中的内容记录到软件包中。这很好,因为短信很普遍,比如“你传递了错误的数据!”和“等等成功了!”此外,我已经包装了软件供应商的日志记录功能,所以我什至不用担心是否符合某些随机 API。

我担心的(为什么我要写这篇文章)是我的系统中会有各种不同的模块。所以问题是这样的:

ModuleFoo extends com.thirdpartyvendor.BaseModule
ModuleBar extends com.thirdpartyvendor.BaseModule

ModuleFoo ---包含实例---> IndependentDataStructure ---尝试将日志条目写入我的 WrappedLogger -- -> 但数据结构没有对 ModuleFoo 的引用。

ModuleBar ---包含实例---> IndependentDataStructure ---尝试将日志条目写入我的 WrappedLogger -- -> 但数据结构没有对 ModuleBar 的引用。

目前,我的系统传递了一个字段 String moduleName,坦率地说,围绕它让我感到恶心……但我希望日志条目告诉我我的模块是什么!记录器如何知道 IndependentDataStructure 实例是否正在使用 ModuleFoo 而不是 ModuleBar (或其他一些模块)没有 IndependentDataStructure 包含对 BaseModule(或 String moduleName)的引用?

最佳答案

Log4J 和 SLF4J 等日志 API 具有诊断上下文的概念,这是一种将各种上下文信息存储在日志消息格式化程序的 ThreadLocal 映射中的方法可以访问装饰消息。它的典型用途是将当前经过身份验证的用户的名称放入 Web 应用程序的日志消息中(使用 servlet 过滤器为每个请求将用户名存储在 MDC 中),您能否在您的应用程序中使用类似的概念?系统?

关于Java 应用程序架构 - 需要一个日志名称,希望保持类不耦合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13049175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com