gpt4 book ai didi

c# - 在多项目解决方案中使用 log4net

转载 作者:行者123 更新时间:2023-11-30 16:49:40 26 4
gpt4 key购买 nike

在多项目解决方案中使用 log4net 的最佳实践是什么。我是否在每个项目上都安装了 log4net Nuget?我有办法在基础设施中创建一个使用 log4net 的记录器吗?我将不胜感激任何想法。

最佳答案

我个人更喜欢通过 IoC 容器注入(inject)我的记录器。你可以,但你不需要。

只需为您的日志记录需求创建一个接口(interface),并将其放在您的所有项目都引用的项目中。 (即核心)

public interface ILogger
{
void Trace(string message);

void Trace(string format, params object[] args);

void Info(string message);

void Error(string message);

void Error(string message, Exception exception);

void Error(Exception exception);
}

现在您可以为每个所需的记录器库编写一个实现,并在需要时进行切换。但我从未见过我们更改日志记录基础架构的项目。

上面 ILogger 接口(interface)的我的 Nlog 记录器实现。

using System;
using NLog;

namespace Tvinio.Core.Logging.NLog
{
public class NLogger : ILogger
{
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();

public void Trace(string message)
{
Logger.Trace(message);
}

public void Trace(string format, params object[] args)
{
Logger.Trace(format, args);
}

public void Info(string message)
{
Logger.Info(message);
}

public void Error(string message)
{
Logger.Error(message);
}

public void Error(string message, Exception exception)
{
Logger.Error(exception, message);
}

public void Error(Exception exception)
{
Logger.Error(exception);
}
}
}

现在,如果您只是为 log4net 记录器创建一个实现并初始化它的一个实例,Visual Studio 将为您携带对所有引用项目的引用(如果它们正在使用该实现)。

而且我也强烈建议阅读有关依赖注入(inject)的内容。你可以在这里找到一篇文章。 http://martinfowler.com/articles/injection.html

关于c# - 在多项目解决方案中使用 log4net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36171161/

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