.net core NLog自定义Renderer/自定义输出字段

参考文章1:如何自定义Rander

参考文章2:注册自定义组件

一、添加固定指定

1、定义组件代码

[LayoutRenderer("hello-world")]
public class HelloWorldLayoutRenderer : LayoutRenderer
{
    protected override void Append(StringBuilder builder, LogEventInfo logEvent)
    {
        builder.Append("hello world!");
    }
}

2、nlog配置文件引入程序集名称

<nlog> 
  <extensions> 
    <add assembly="MyAssembly"/> 
  </extensions> 

3、nlog配置文件中添加配置

将${hello-world}写入配置文件即可

二、如果想将http请求中参数写入该怎么办呢?

1、定义组件代码,这里是参考源码写的。这里是记录每个请求的token,httpContext都能拿到,其他就可以为所欲为了


    [LayoutRenderer("aspnet-token")]
    public class AspNetRequestMachineNoLayoutRenderer : AspNetLayoutRendererBase
    {
       
        [DefaultValue("token")]
        public Layout ForwardedForHeader { get; set; } = "token";
        
        protected override void DoAppend(StringBuilder builder, LogEventInfo logEvent)
        {
            var httpContext = HttpContextAccessor.HttpContext;

            var request = httpContext?.Request;
            if (request == null)
            {
                return;
            }

            var machineNo = ForwardedForHeader != null ? TryLookupForwardHeader(request, logEvent) : string.Empty;

            builder.Append(token);
        }

        private string TryLookupForwardHeader(Microsoft.AspNetCore.Http.HttpRequest httpRequest, LogEventInfo logEvent)
        {
            var headerName = ForwardedForHeader.Render(logEvent);
            if (httpRequest.Headers?.ContainsKey(headerName) == true)
            {
                var forwardedHeaders = httpRequest.Headers.GetCommaSeparatedValues(headerName);
                if (forwardedHeaders.Length > 0)
                {
                    return forwardedHeaders[0];
                }
            }

            return string.Empty;
        }
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在 .NET Core WinForms 应用程序中使用 NLog 日志记录器,需要执行以下步骤: 1. 首先,通过 NuGet 安装 NLog 包。可以使用 Visual Studio 的 NuGet 包管理器或在项目文件中手动添加以下依赖项: ``` <PackageReference Include="NLog" Version="x.x.x" /> ``` 2. 创建 NLog 配置文件。可以在应用程序的根目录中创建一个名为 `nlog.config` 的 XML 文件,并使用以下示例配置: ``` <?xml version="1.0" encoding="utf-8"?> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <targets> <target name="file" xsi:type="File" fileName="${basedir}/logs/${shortdate}.log" layout="${longdate} ${uppercase:${level}} ${message} ${exception:format=tostring}" /> </targets> <rules> <logger name="*" minlevel="Trace" writeTo="file" /> </rules> </nlog> ``` 该配置将日志记录到位于应用程序根目录下的名为 `logs` 的文件夹中,并将日志级别设置为 `Trace`。 3. 在应用程序代码中引用 NLog 并创建一个日志记录器。可以使用以下代码: ``` using NLog; // ... private static readonly Logger logger = LogManager.GetCurrentClassLogger(); ``` 4. 在需要记录日志的位置调用日志记录器的方法。例如: ``` logger.Debug("Debug message"); logger.Info("Info message"); logger.Warn("Warning message"); logger.Error("Error message"); logger.Fatal("Fatal message"); ``` 这将记录不同级别的日志消息,并在配置文件中指定的位置写入日志文件。 以上步骤应该能够帮助您在 .NET Core WinForms 应用程序中使用 NLog 记录器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值