我需要在NLog将其发送到目标之前序列化一些对象。我可以编写自定义目标,但是我必须为每个可能的日志目标编写自定义目标。
我需要知道的是,NLog是否将消息(基于级别)记录到任何目标,如果是,则序列化数据。如果logdata声明根据NLog配置不记录的级别,那么我想避免序列化对象,因为这需要时间。
在NLog将数据发送给目标之前,有没有办法准备数据?或者我必须在自定义目标类中解决这个问题吗?
答案 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());
}
}