.net8.0 log4net在programe中记录全站的访问日志, 当然,也可以使用nginx的日志查看,不过,这里还是用asp.net本身来记录一下,可以记入数据库。方便后续分析
在.NET 8.0中使用log4net记录全站访问日志,你需要进行以下步骤:
dotnet add package log4net
配置log4net。在项目的
appsettings.json
中添加log4net的配置。在程序的入口点(通常是
Program.cs
)配置log4net。创建日志记录器,在需要记录日志的地方进行日志记录。
以下是具体的实现步骤和代码示例:
安装log4net。
配置log4net。在
appsettings.json
中添加如下配置:
{ "Logging": { "Log4Net": { "Level": "DEBUG", "ConfigFile": "log4net.config" } }}
创建一个log4net的配置文件log4net.config
(通常放在项目根目录),并进行相关配置
<log4net> <appender name="RollingFile" type="log4net.Appender.RollingFileAppender"> <file value="logs/access.log" /> <appendToFile value="true" /> <rollingStyle value="Composite" /> <maxSizeRollBackups value="10" /> <maximumFileSize value="10MB" /> <staticLogFileName value="true" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" /> </layout> </appender> <root> <level value="DEBUG" /> <appender-ref ref="RollingFile" /> </root></log4net>
在Program.cs中配置log4net并使用日志记录器。
using log4net;using log4net.Config;using Microsoft.Extensions.Logging;using System;using System.IO; // ... var builder = WebApplication.CreateBuilder(args); // 加载log4net配置XmlConfigurator.ConfigureAndWatch(new FileInfo("log4net.config")); // 添加log4net日志记录builder.Logging.AddLog4Net(); var app = builder.Build(); // 获取日志记录器ILog log = LogManager.GetLogger(typeof(Program)); // 在这里使用日志记录器app.Use(async (context, next) =>{ log.Info($"{context.Request.Method} {context.Request.Path}"); //这里可以写入数据库,为了后续的分析方便 await next();}); // ... app.Run();
在上述代码中,首先配置并监视log4net的配置文件,然后将log4net添加到日志记录提供者中。在请求管道中,我们获取一个日志记录器并记录访问信息。这样,每当有请求通过ASP.NET Core应用程序时,就会记录相关的访问信息到指定的日志文件中。