gpt4 book ai didi

c# - 将记录器传递给静态类

转载 作者:行者123 更新时间:2023-12-05 01:47:04 24 4
gpt4 key购买 nike

我在生产中有一个静态类。由于某些原因,我们需要替换这个类中的日志记录部分方法。(仍然是一个静态类不变)

现在我想向它传递一个记录器。记录器来自另一个类。

public static class OutputUtils   
public static void LogInfo(string logMessage)
{
logger.LogInfo(logMessage);
}

在另一个类(class),我有

private readonly ILogger _logger;
public AnotherClass(ILogger logger)
{
_logger = logger;
}
internal static void LogDebug(string logMessage)
{
OutputUtils.LogInfo(logMessage);
}

是的,我想将 _logger 传递给静态类 OutputUtils。怎么办?

最佳答案

最简单的更改是将记录器添加为参数:

public static void LogInfo(ILogger logger, string logMessage)
{
logger.LogInfo(logMessage);
}

不会向类中添加静态属性,因为如果多个客户端尝试设置该属性,那么您必须考虑线程安全。如果一个线程设置记录器,另一个线程将属性设置为其他记录器,并且第一个线程调用 LogInfo,这将输出到 other,那么您可能会出现竞争条件线程的记录器。

但是这个方法的目的到底是什么?为什么客户端不直接调用 logger.LogInfo(logMessage)

关于c# - 将记录器传递给静态类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31478382/

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