首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在使用ASP.NET的log4net核心日志中包含客户端的IP地址?

如何在使用ASP.NET的log4net核心日志中包含客户端的IP地址?
EN

Stack Overflow用户
提问于 2020-06-10 21:15:21
回答 1查看 867关注 0票数 0

是否有任何消息模板或其他技术可用于捕获客户端的IP地址并使用log4net在每个日志中打印该地址?

此时,我有以下的log4net转换模式

代码语言:javascript
运行
复制
 <conversionPattern value="%date [%thread] %level %logger - %message%newline%exception" />

所以,我不确定,如果我只是添加一个占位符来获取IP地址,log4bet会神奇地知道客户机的IP地址并打印出来吗?

还是我也需要配置我的ASP.Net核心3.1网站?

这是我目前的"CreateHostBuilder方法“。

代码语言:javascript
运行
复制
public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureLogging(logging =>
                {
                    logging.ClearProviders();
                    logging.AddLog4Net();
                })
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });

那么,我还需要对这个方法做一些修改吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-11 00:15:26

好了,我终于找到了解决办法。所以,我是在回答我自己的问题。

我已经创建了这样一个中间件片段:

代码语言:javascript
运行
复制
    app.Use(async (httpContext, next) =>
    {
        log4net.ThreadContext.Properties["ipAddress"] =
                                          httpContext?.Connection?.RemoteIpAddress;

         await next();
    });

然后,我将中间件片段放在Startup.cs文件中的配置方法中,如下所示。

然后,在我的%property{ipAddress}配置文件中,我在转换模式值中添加了log4net。

然后,我看到登录在日志文件中的IP地址。我希望这个解决方案能帮助需要它的人。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62313262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档