gpt4 book ai didi

c# - 记录抢占

转载 作者:行者123 更新时间:2023-11-30 19:50:40 25 4
gpt4 key购买 nike

无关的日志记录可能很昂贵。因此,我可以关闭日志记录或提高日志记录阈值级别以减少生产模式期间的日志记录(每个人都知道!)

但是,调用以向记录器语句提供参数的例程呢?

考虑记录器语句。

logger.info("窗口数="+wins.size());

其中 wins.size() 是一个非常昂贵的操作 - 比如说,只是为了说明我对问题的(错误)理解。

如果关闭信息日志记录,wins.size() 是否仍会运行。

因为当我进行调试时,wins.size() 似乎先于 log.info() 被跨过。如果是这样,您有什么策略来防止在记录器关闭时执行记录器语句中的昂贵函数?

最佳答案

在 C# 3.0 中,您可以使用 lambda 仅在日志记录打开时执行对日志记录函数的调用。这是使用 C# 的示例 Common.Logging :

Logger.Trace(m=>m("number of windows="+wins.size()));

Trace 的定义如下:

void Trace(Action<FormatMessageHandler> formatMessageCallback);

FormatMessageHandler 是

public delegate string FormatMessageHandler(string format, params object[] args);

如果打开跟踪,会发生什么情况 m=>m("number of windows="+wins.size()) lambda 被调用。如果它关闭,则永远不会进行昂贵的获取窗口大小的调用。

关于c# - 记录抢占,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1997153/

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