【发布时间】:2016-07-16 13:52:34
【问题描述】:
我有 3 个不同的应用程序。我在一个共享库中有 log4net,它在 3 个应用程序之间共享。对所有 3 个服务使用相同的记录器是一种不好的做法。 我写过这样的东西
public class Log4netLogger
{
private ILog _logger = null;
public Log4netLogger(ILog logger)
{
_logger = logger;
}
public void write(Level logLevel, string message)
{
_logger.Logger.Log(_logger.GetType(),logLevel,message,null);
}
}
在我的应用程序 1 app_start 中,我像这样注入
myContainer.RegisterType<ILog>
(
new ContainerControlledLifetimeManager(),
new InjectionFactory(x => LogManager.GetLogger("Application 1"))
);
在我的代码中,我正在使用类似
_logger = myContainer.Resolve<log4net.ILog>();
Log4netLogger logMessage= new Log4netLogger(_logger);
logMessage.Write
(
log4net.Core.Level.Info,
logMessage
);
另外,我认为这种方法的缺点之一是我在所有 3 个应用程序中都安装了 log4net。所以我想知道是我做错了什么还是有更好的方法?
【问题讨论】:
标签: logging dependency-injection log4net