在多项目解决方案中使用 log4net
using log4net in a multi projects solution
在多项目解决方案中使用 log4net 的最佳实践是什么。
我是否在每个项目上都安装了 log4net Nuget?
我有办法在基础设施中创建一个使用 log4net 的记录器吗?
我会很感激任何想法。
我个人更喜欢通过 IoC 容器注入我的记录器。可以,但没必要。
只需为您的日志记录需求创建一个接口,并将其放在您的所有项目都引用的项目中。 (即核心)
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 接口的我的 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 将为您提供对所有使用该实现的引用项目的引用。
而且我也强烈建议阅读有关依赖注入的内容。你可以在这里找到一篇文章。
http://martinfowler.com/articles/injection.html
在多项目解决方案中使用 log4net 的最佳实践是什么。 我是否在每个项目上都安装了 log4net Nuget? 我有办法在基础设施中创建一个使用 log4net 的记录器吗? 我会很感激任何想法。
我个人更喜欢通过 IoC 容器注入我的记录器。可以,但没必要。
只需为您的日志记录需求创建一个接口,并将其放在您的所有项目都引用的项目中。 (即核心)
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 接口的我的 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 将为您提供对所有使用该实现的引用项目的引用。
而且我也强烈建议阅读有关依赖注入的内容。你可以在这里找到一篇文章。 http://martinfowler.com/articles/injection.html