在 NLog 将数据发送到目标之前准备数据?
Prepare data before NLog send it to target?
我需要在 NLog 将其发送到目标之前序列化一些对象。我可以编写自定义目标,但我必须为每个可能的日志目标编写自定义目标。
我需要知道的是 NLog 是否会将消息(基于级别)记录到任何目标,如果是,序列化数据。如果日志数据指出根据 NLog 配置不记录的级别,那么我想避免序列化对象,因为这需要时间。
有什么方法可以在 NLog 将数据发送到目标之前准备数据,还是我必须在自定义目标中解决这个问题 类?
您可以获得 Logger
并检查 IsXXXEnabled
属性。
例如:
class MyExpensiveClass
{
public void string Serialize()
{
return SomethingExpensive;
}
}
class ThisNeedsLogging
{
private static Logger logger = LogManager.GetCurrentClassLogger();
private MyExpensiveClass expensive = new MyExpensiveClass();
public void TraceSomething()
{
if (logger.IsDebugEnabled)
logger.Debug(expensive.Serialize());
}
}
我需要在 NLog 将其发送到目标之前序列化一些对象。我可以编写自定义目标,但我必须为每个可能的日志目标编写自定义目标。
我需要知道的是 NLog 是否会将消息(基于级别)记录到任何目标,如果是,序列化数据。如果日志数据指出根据 NLog 配置不记录的级别,那么我想避免序列化对象,因为这需要时间。
有什么方法可以在 NLog 将数据发送到目标之前准备数据,还是我必须在自定义目标中解决这个问题 类?
您可以获得 Logger
并检查 IsXXXEnabled
属性。
例如:
class MyExpensiveClass
{
public void string Serialize()
{
return SomethingExpensive;
}
}
class ThisNeedsLogging
{
private static Logger logger = LogManager.GetCurrentClassLogger();
private MyExpensiveClass expensive = new MyExpensiveClass();
public void TraceSomething()
{
if (logger.IsDebugEnabled)
logger.Debug(expensive.Serialize());
}
}