在NLog将数据发送到目标之前准备数据?

时间:2016-06-15 10:06:20

标签: c# .net nlog

我需要在NLog将其发送到目标之前序列化一些对象。我可以编写自定义目标,但是我必须为每个可能的日志目标编写自定义目标。

我需要知道的是,NLog是否将消息(基于级别)记录到任何目标,如果是,则序列化数据。如果logdata声明根据NLog配置不记录的级别,那么我想避免序列化对象,因为这需要时间。

在NLog将数据发送给目标之前,有没有办法准备数据?或者我必须在自定义目标类中解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您可以获得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());
    }
}