c# - 如何在多层应用程序中拥有单个 log4net dll
问题描述
我有一个单独的项目用于登录我的 web api 解决方案。在日志记录项目中,我使用的是 log4net dll。它一切正常。
看起来我还必须在我的 web api 项目中添加 log4net dll,这是我的应用程序的入口点。
1)为什么我需要在我的 web api 项目中添加 log4net dll?
2)有没有办法在web api项目中不添加log4net来完成这项工作?我喜欢在不同的应用程序中使用我的记录器 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 的任何其他项目的引用。在您的 Web Api 项目中,右键单击 References -> Add References。在 Project -> Solution 下选择 Logging 项目,然后单击 OK。
编辑:
看看我的实现。我在一个单独的项目中做了,并按照上述步骤链接到其他项目。
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);
}
}
希望能帮助到你
推荐阅读
- javascript - 如何修复未捕获的 JavaScript 引用错误?
- grails - Grails 集成测试失败,并显示“通过构造函数参数表示的依赖关系不满足”
- java - 将 hive 外部表更改为同一数据库中的内部表也会从另一个表中删除数据
- c# - 如何对通用列表执行算术运算
- c++ - 表达弧度 C++
- c - 如何读取存储在 txt 文件中的所有内容?
- xamarin.forms - Xamarin 表单选项卡式页面未从 OnAppearing 中检索数据
- twilio - 识别转接的呼叫
- android-activity - 当异常不在主要活动中时,如何让 ACRA 停止应用程序?
- php - Laravel 2 BadMethodCallException 实例:'int 不存在'和'方法不存在'