如何在多层应用程序中拥有单个log4netdll



我有一个单独的项目用于登录我的web api解决方案。在日志项目中,我使用的是log4netdll。一切正常。

看起来我也必须在我的webapi项目中添加log4netdll,这是我的应用程序的入口点。

1(为什么我需要在我的web api项目中添加log4net dll?

2( 有没有什么方法可以在不在webapi项目中添加log4net的情况下实现这一点?我喜欢在不同的应用程序中使用我的logger-peoject,不想在多个项目中使用log4net。

public class Logger : ILogger
{
private static readonly ILog LoggerObj = LogManager.GetLogger("ErrorLog");
public Logger()
{
XmlConfigurator.Configure();
}
}

全球.asax

protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
UnityConfig.RegisterComponents();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
// Initialize log4net.
//log4net.Config.XmlConfigurator.Configure();
// Initialize log4net.
var logger = new Logger();
}

我看到这一点的唯一方法是添加您的Logging项目,作为对您的web api项目或任何其他想要使用Logging的项目的引用。在您的WebApi项目上,右键单击引用->添加引用。在项目->解决方案下,选择您的日志项目,然后单击确定

编辑:

看看我的实现。我在一个单独的项目中完成了,并按照上述步骤链接到其他项目。

namespace MyProject.Logger {
public partial class Log {
private static readonly Log _instance = new Log();
protected ILog monitoringLogger;
protected static ILog debugLogger;
private Log() {
monitoringLogger = LogManager.GetLogger(System.Environment.MachineName);
debugLogger = LogManager.GetLogger(System.Environment.MachineName);
}
public static void Debug(string message) {
debugLogger.Debug(message);
}
public static void Debug(string message, Exception exception) {
debugLogger.Debug(message, exception);
}
public static void Info(string message) {
_instance.monitoringLogger.Info(message);
}
}

希望它能帮助

相关内容

最新更新