我想让开发人员使用NLog将对象记录为JSON。为此,我需要在发送到nLog OR之前实现一些逻辑,然后再发送到目标。
我可以构建自己的Target(TargetWithLayout)
,但是我找不到从配置中检查此特定目标/记录器的日志级别的方法吗?另一个缺点是我需要为我们将使用的每个目标(EventLog,File,WebService等)创建一个新的TargetWithLayout
类。
另一种解决方案是在使用NLog的LogHandler
中进行此操作。知道我是否应该翻译对象的唯一方法可能是从配置文件中读取所有记录器,如果它们中的任何一个设置为记录对象,那么我将序列化。但我不确定是否可以从LogHandler
检查此信息(不手动执行)?
答案 0 :(得分:2)
您可以使用NLog-Logger对象查询活动的日志记录规则:
if (myLogger.IsTraceEnabled)
myLogger.Trace("Hello World");
答案 1 :(得分:1)
您可以使用NLog json布局在日志文件中编写json,无需自行检查并进行序列化:
<target name="jsonFile" xsi:type="File" fileName="${logFileNamePrefix}.json">
<layout xsi:type="JsonLayout">
<attribute name="time" layout="${longdate}" />
<attribute name="level" layout="${level:upperCase=true}"/>
<attribute name="message" layout="${message}" />
</layout>
</target>
日志消息格式化由NLog处理,而不是自己处理。
答案 2 :(得分:0)