gpt4 book ai didi

c# - 这是使用 NLog 登录到特定目标的正确方法吗?

转载 作者:太空狗 更新时间:2023-10-29 22:22:19 24 4
gpt4 key购买 nike

我想将一些特殊事件记录到另一个表中,该表将包含比一般应用程序日志更多的数据。

如果我将第二个数据库目标添加到 NLog.config,我该如何在我的代码中使用它?

这是否是正确的做法:

NLog
.LogManager
.Configuration
.AllTargets
.Single(x => x.Name == "mySecondLogTable")
.WriteAsyncLogEvent(...);

然后在 NLog.config 中,我会在规则元素中跳过这个目标,对吗?


总结:我想定义多个数据库目标,如通用日志和专用日志,用于我需要将更多详细信息记录到不同表中的情况。我想在默认情况下使用通用日志,而仅在因其业务逻辑而需要这种特殊日志记录的函数中使用特殊日志。

最佳答案

您始终可以创建另一个记录器实例并使用 NLog LoggingRules 重定向到所需目标。

例如,我想将扩展日志记录到一个单独的文件中。然后我去创建:

<nlog>
<rules>
<!--- Notice that final=true stops the logevents from also reaching defaultTarget -->
<logger name="ExtendedLogging" minlevel="Trace" writeTo="extendedTarget" final="true" />
<!--- Wildcard rule will capture all logevents not matching the "final" rule above -->
<logger name="*" minlevel="Trace" writeTo="defaultTarget" />
</rules>

<targets>
<target name="extendedTarget" xsi:type="File" fileName="ExtendedLog_${shortdate}.log" />
<target name="defaultTarget" xsi:type="File" fileName="AppLog_${shortdate}.log" />
</targets>
</nlog>

然后我转到代码并创建

private readonly Logger logger = LogManager.GetLogger("ExtendedLogging");

我认为在配置文件中搜索某些东西并通过后门之类的东西执行日志记录不是一个好主意。最好明确说明所有这些事情。

另请参阅:https://github.com/nlog/nlog/wiki/Configuration-file#rules

关于c# - 这是使用 NLog 登录到特定目标的正确方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28959346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com