NLog - 如何打印子类的 属性 值
NLog - how to print property value of a subclass
我有 dotnet 核心控制台应用程序和一堆相同 BaseClass
的子classes。我想为每个 subclass 分配一个短 name/moniker 让我们说 public string Moniker => "A1"
我想在 subclass 或 base class 时在日志中打印它调用日志。
我不使用任何 DI。记录器是单例中的静态字段 class.
还有几个其他 class 打印到日志中但与基础 class 无关。
public static NLog.Logger logger;
好吧,我认为在日志布局配置中包含变量是不可能的,或者至少很难。
我建议定义写入自定义日志的方法:
public string Moniker => "A1";
public void LogInfo(string message) => Logger.Info($"{Moniker} {message}");
我可以覆盖 BaseClass 的记录器名称。
也许是这样的:
class BaseClass
{
protected virtual Logger Log { get { return _logger } }
private static Logger _logger = LogManager.GetLogger("MyLogger");
}
class ExactClass : BaseClass
{
protected override Logger Log { get { return _logger } }
private static Logger _logger = LogManager.GetLogger("MyLogger.A1");
}
然后在布局中使用${logger}
:
${level} ${logger} ${message}
另请参阅:https://github.com/NLog/NLog/wiki/How-to-create-Logger-for-sub-classes
我有 dotnet 核心控制台应用程序和一堆相同 BaseClass
的子classes。我想为每个 subclass 分配一个短 name/moniker 让我们说 public string Moniker => "A1"
我想在 subclass 或 base class 时在日志中打印它调用日志。
我不使用任何 DI。记录器是单例中的静态字段 class.
还有几个其他 class 打印到日志中但与基础 class 无关。
public static NLog.Logger logger;
好吧,我认为在日志布局配置中包含变量是不可能的,或者至少很难。
我建议定义写入自定义日志的方法:
public string Moniker => "A1";
public void LogInfo(string message) => Logger.Info($"{Moniker} {message}");
我可以覆盖 BaseClass 的记录器名称。
也许是这样的:
class BaseClass
{
protected virtual Logger Log { get { return _logger } }
private static Logger _logger = LogManager.GetLogger("MyLogger");
}
class ExactClass : BaseClass
{
protected override Logger Log { get { return _logger } }
private static Logger _logger = LogManager.GetLogger("MyLogger.A1");
}
然后在布局中使用${logger}
:
${level} ${logger} ${message}
另请参阅:https://github.com/NLog/NLog/wiki/How-to-create-Logger-for-sub-classes