c# - nlog 通过记录器名称设置全局属性
问题描述
我想实例化一个记录器实例一次并为其设置一些属性,只要我以该名称获取记录器,就可以在任何地方使用这些属性,这可能吗?如何做?
例子 -
Logger logger = LogManager.GetLogger("MyLogger");
我想为此记录器设置一些属性,以使用作业名称为我的计划作业 -
logger.Property = job.Name;
作业.cs
public class Job{
Logger logger = LogManager.GetLogger("MyLogger");
logger.Property = job.Name;
//Call worker
worker.Process();
}
工人.cs
public class worker{
Logger logger = LogManager.GetLogger("MyLogger");
public static Process(){
logger.Error("Test");
}
}
我想在工作人员中记录作业名称,实现此目的的最佳方法是什么?我想将此扩展到工作或工人的任何进一步呼叫。
解决方案
您可以考虑在任何地方使用相同的 Logger 实例,并使用WithProperty:
public static class MyLogger {
public static Logger Instance = NLog.LogManager.GetLogger("MyLogger").WithProperty("Hello", World");
}
public class Job{
Logger logger = MyLogger.Instance;
logger.Property = job.Name;
//Call worker
worker.Process();
}
推荐阅读
- ios - 如何添加观察者以查找导航栏显示和隐藏
- oracle - 根据触发器中的参数显示/隐藏项目
- dart - Flutter / Dart 使用具有后代和 Navigator 的 Scoped Model
- css - 如何在angular6中应用样式
- node.js - 在 React 中如何创建输入字段并连续更改当前项目?
- python - 成本函数变成 NaN
- crystal-reports - 水晶报表-如何对详细信息部分中的抑制字段求和?
- html - 使用angular6显示多个嵌套数据
- google-cloud-datastore - 有没有办法像 GQL 中的 CONTAINS 过滤器一样查询谷歌数据存储?
- mysql - 将嵌套的 XML 数据插入 mysql 数据库