NLog可以从C#应用程序接收变量,其值在运行时发生变化吗?例如批次ID

问题描述 投票:0回答:1

C#应用程序是否可以在运行时传递NLog变量,然后将其用作插入数据库的输入?例如我有一个应用程序,在文件处理过程中,该应用程序接收一个唯一的批处理ID作为命令行参数。可以同时启动该可执行文件的多个实例,并且每个实例都会收到自己的批处理ID。为了进行故障排除……我真的需要让NLog将该批次ID传递给日志的插入。我看到有一个$ {var} layout renderer,但它已经在配置文件中定义了。那么所有这些可执行文件都将共享相同的配置文件。因此,这似乎不是解决方案。任何帮助和代码示例(或示例的链接)都将受到赞赏。谢谢您的时间。

c# winforms nlog
1个回答
0
投票

听起来您的batchId对于该过程是全局的,因此您可以签出Gdc layout renderer

全局诊断上下文-用于保存每个应用程序实例值的字典结构。

支持的平台:全部(NLog 4.1允许存储任何对象类型,而不仅仅是字符串)

当您希望使某些信息可用于当前过程中的每个记录器时,请使用Global Diagnostics Context。

该文档已说明了如何使用它,但非常简短:在配置文件中,您将使用Gdc layout renderer来将${gdc:item=batchId}放在日志中。然后,在应用程序中的某个位置(在batchId函数中,我下注),您将执行:Main

我不知道GlobalDiagnosticsContext.Set("batchId", batchId);所在的名称空间。

© www.soinside.com 2019 - 2024. All rights reserved.