如何在运行时给NLog配置传入想要的参数值

本文介绍了如何在运行时为NLog的数据库目标配置传入自定义参数值,通过在LogEventInfo中添加用户信息,并在配置文件中使用${event-context}来引用这些参数,实现了灵活的日志记录解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例如我们在给下述数据库Target做配置时,往往想在运行时传入我们想要的参数值,而不仅仅是这date、level这些内置的值:
    < target name ="dbLogging " xsi:type ="Database " connectionStringName ="EtlLogGlobal ">
      < commandText>
        insert into Logging([LogTime], [Machine],[Logger],[LogLevel],[Message],[ProcessName],[AppVersion]) values (@LogTime, @Machine,@Logger,@LogLevel,@Message,@ProcessName, @AppVersion);
      </ commandText>
      < parameter name="@DatabaseName" layout="${event-context:item=DatabaseName}" >
      < parameter name ="@LogTime " layout ="${date} " />
      < parameter name ="@LogLevel " layout ="${level} " />
      < parameter name ="@Logger " layout ="${logger} " />
      < parameter name ="@Message " layout ="${message} ${exception} " />
      < parameter name ="@Machine " layout ="${machinename} " />
      < parameter name ="@AppVersion " layout ="${assembly-version} " />
      < parameter name ="@ProcessName " layout ="${processname} " />
    </ target>

解决方法:
     step 1 用下述代码,把需要的信息写入LogEventInfo,再把它传入Log方法。LogEventInfo里不仅包含正常的Logger名、Message等,也包括用户自定义的信息。

            LogEventInfo ei = new LogEventInfo( LogLevel.Error, “LoggerName” , "Message");
          
         ei.Properties[ "DatabaseName"] = "master"
           
            LogHelper.NLogger.Log(ei);

     step 2 在配置文件里使用此方法传入刚才用户自定义的信息:
     < parameter name="@DatabaseName" layout="${event-context:item=DatabaseName}" >
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值