是否有任何消息模板或其他技术可用于捕获客户端的IP地址并使用log4net在每个日志中打印该地址?
此时,我有以下的log4net转换模式
<conversionPattern value="%date [%thread] %level %logger - %message%newline%exception" />
所以,我不确定,如果我只是添加一个占位符来获取IP地址,log4bet会神奇地知道客户机的IP地址并打印出来吗?
还是我也需要配置我的ASP.Net核心3.1网站?
这是我目前的"CreateHostBuilder方法“。
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.AddLog4Net();
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
那么,我还需要对这个方法做一些修改吗?
发布于 2020-06-11 00:15:26
好了,我终于找到了解决办法。所以,我是在回答我自己的问题。
我已经创建了这样一个中间件片段:
app.Use(async (httpContext, next) =>
{
log4net.ThreadContext.Properties["ipAddress"] =
httpContext?.Connection?.RemoteIpAddress;
await next();
});
然后,我将中间件片段放在Startup.cs文件中的配置方法中,如下所示。
然后,在我的%property{ipAddress}配置文件中,我在转换模式值中添加了log4net。
然后,我看到登录在日志文件中的IP地址。我希望这个解决方案能帮助需要它的人。
https://stackoverflow.com/questions/62313262
复制相似问题