【发布时间】:2020-03-13 14:32:24
【问题描述】:
我的应用程序由多个单独的程序集组成。按照内部约定,每个程序集都定义了一个用于记录的 id。
目前,有一个名为CoreLog 的基本类提供Write 等基本功能。其中一个参数是我前面提到的Id。
通常,每个程序集都会定义一个名为 Log 的类,该类仅调用来自 CoreLog 的函数并且提供程序集的唯一 ID。
这样我们就可以简单地坚持在整个代码中使用Log.Write。
这很好用,除了我必须在开始时为每个新程序集都这样做。而且,如果发生变化,我还必须调整大量文件。
有没有更好的方法?
【问题讨论】:
-
您现在的做法可能是最快的解决方案。您直接将 ID 作为参数提供给日志记录方法。使用一些综合逻辑来确定调用者的元数据(通过
StackTrace、Assembly.GetCallingAssemby等)肯定会更慢。日志记录必须尽可能快,尤其是在您记录大量日志的情况下。 -
@dymanoid 我同意反射要慢得多(展开堆栈非常很慢),但我会注意你也不应该登录热路径.它应该是异步的。