c# - NLog 记录到配置中提到的特定目标

标签 c# .net nlog

我有一个具有以下 NLog 配置的控制台应用程序

<targets async="true">
    <target name="Afile" xsi:type="File" fileName="c:\users\a\Logs\ALog.txt" />
    <target name="Bfile" xsi:type="File" fileName="c:\users\a\Logs\BLog.txt" />
    <target name="Cfile" xsi:type="File" fileName="c:\users\a\Logs\CLog.txt" />
    <target name="Dfile" xsi:type="File" fileName="c:\users\a\Logs\DLog.txt" />
    <target name="Efile" xsi:type="File" fileName="c:\users\a\Logs\ELog.txt" />
    <target name="Ffile" xsi:type="File" fileName="c:\users\a\Logs\FLog.txt" />
    <target name="Gfile" xsi:type="File" fileName="c:\users\a\Logs\GLog.txt" />
 </targets>

   <rules>
    <logger name="*" minlevel="Debug" writeTo="Afile" />
    <logger name="*" minlevel="Debug" writeTo="Bfile" />
    <logger name="*" minlevel="Debug" writeTo="Cfile" />
    <logger name="*" minlevel="Debug" writeTo="Dfile" />
    <logger name="*" minlevel="Debug" writeTo="Efile" />
    <logger name="*" minlevel="Debug" writeTo="Ffile" />
    <logger name="*" minlevel="Debug" writeTo="Gfile" />
  </rules>

控制台应用程序从 A 到 F 的任何地方接受一个参数,基于执行期间定义的参数,我想将日志写入特定的日志文件 因此,如果我的应用程序是使用参数 A 执行的,我希望我的应用程序写入目标 Afile 并相应地写入其他参数

最佳答案

你可以这样做:

<targets async="true">
   <target name="onefile" xsi:type="File" fileName="c:\users\a\Logs\${gdc:item=CmdArg}Log.txt" />
</targets>

<rules>
   <logger name="*" minlevel="Debug" writeTo="onefile" />
</rules>

然后在进行任何日志记录之前配置以下变量:

NLog.GlobalDiagnosticsContext.Set("CmdArg","someValue");

另见 https://github.com/NLog/NLog/wiki/Gdc-layout-renderer

关于c# - NLog 记录到配置中提到的特定目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51505254/

相关文章:

c# - 在 Razor 中向 URL.Action 添加参数

c# - 使用 Process.Start 运行 C++ exe 与使用 CLR 包装 C++ 代码

c# - 如何在 .NET 中将 SQLite 与 NLog 一起使用

c# - 使用 Json.NET 将嵌套 Firebase 数据库对象转换为 C# 对象

c# - ASP.NET Web 表单自定义验证器未触发

c# - 如何让 DirectoryModuleCatalog 工作?

c# - 将 .net 4.0 中的 Entity Framework 与 Oracle 数据库一起使用 - 可能吗?

asp.net-core - 如何配置NLog获取IP地址.NET Core

c# - 有没有办法用 NLog 创建命名记录器并按此名称过滤日志记录?

C#、LINQ、SQL : Compound columns