我要明确写入两个不同的日志文件。基于操作的方法或类型。
如何?
我看过以下StackOverFlow帖子Having NLog loggers with different configuration
如何配置NLog?我也需要什么代码,以便可以写入一个文件或另一个文件?使用类似:log.Error("My Big Error")
的代码;
帖子包含以下内容
<targets>
<target name="f1" xsi:type="File" fileName="${logger}.txt" />
<target name="f2" xsi:type="File" fileName="${shortdate}.txt" />
</targets>
所以,如果是'一般错误',我想写到f1。如果是文件操作错误,我要写入f2
提前感谢
在NLog配置中,您需要设置一些规则以写入目标(否则将不记录任何内容)。在这些规则中,您可以添加过滤器和条件。
例如:
<rules>
<logger name="Logger1" writeTo="f1" />
<logger name="Logger2" writeTo="f2" />
</rules>
name
属性在这里是一个过滤器,因此第一个规则意味着:如果记录器名称等于“ Logger1”,则写入f1。规则从上到下进行处理。
因此,当调用LogManager.GetLogger("Logger1").Info("My message")
时,它将写入目标f1
,而LogManager.GetLogger("Logger2").Info("My message")
将写入目标f2
。
[使用LogManager.GetCurrentClassLogger()
时,记录器名称由当前类和名称空间名称构成,例如“ MyNameSpace.MyClass”。这意味着您可以将name属性调整为name="MyNameSpace.MyClass"
或name="*.MyClass"
进行匹配。
[还有更多过滤器选项,例如最小级别,最大级别以及更高级的过滤器(不仅针对记录器名称)。您可以阅读有关here的更多信息>