gpt4 book ai didi

.net - 单例、日志记录和全局设置 - 好还是坏的实现?

转载 作者:行者123 更新时间:2023-12-04 07:14:41 27 4
gpt4 key购买 nike

我有一个日志类,需要从应用程序中的几乎所有地方调用。

但是,它需要在应用程序的开头设置“要写入的路径”、“日志级别”以及是否“启用”。

我不想每次都给这个参数或将 Logging 类作为参数传递给我的应用程序中的每个对象,所以我确实使用单例模式进行日志记录。

最近我从紧密耦合的类中遭受了很多痛苦,我不想再犯同样的错误,但考虑到这听起来像是唯一的好解决方案。

更新:

我并不真正关心记录我关心的是解决类似的设计问题 ,我与另一个需要从这么多类中使用的全局设置对象有同样的困境。但是将它注入(inject)到它们中的每一个只会产生可怕的开销和可读性较差的代码。

你如何看待这个实现,当你遇到类似的设计决策时你会怎么做?

附言请不要建议“使用 Log4X 库”等。

最佳答案

首先 - 你能把日志写入器写成跟踪监听器,并使用 Trace.Write等从方法?

你真的需要一个实例吗?这将很有用,例如,如果您想将其抽象为 TextWriter或类似的 - 但如果它是一个独立的单例,方法可以不直接使用静态方法,即 Log.Write(...) (而不是传入一个日志实例)?

关于一般问题 - 它取决于正在执行日志记录的类型。对于“管理器”(等)类,您可以考虑使用依赖注入(inject)(Unity、StructureMap 等)来自动执行此操作。不过,我通常不会将注入(inject)与 DTO 一起使用。

关于.net - 单例、日志记录和全局设置 - 好还是坏的实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/796585/

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