欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 将 ASP.NET Core 应用程序的日志保存到 D 盘的文件中 (如 Serilog)

将 ASP.NET Core 应用程序的日志保存到 D 盘的文件中 (如 Serilog)

2025/12/17 3:47:30 来源:https://blog.csdn.net/weixin_44895040/article/details/144692231  浏览:    关键词:将 ASP.NET Core 应用程序的日志保存到 D 盘的文件中 (如 Serilog)

将 ASP.NET Core 应用程序的日志保存到 D 盘的文件中,可以使用第三方日志库(如 Serilog)来实现。Serilog 是一个流行的日志库,支持将日志输出到文件、控制台、数据库等多种目标。

以下是实现步骤:

1. 安装 Serilog 相关包

在你的 ASP.NET Core 项目中,安装以下 NuGet 包:

Serilog.AspNetCore:用于集成 Serilog 到 ASP.NET Core。

Serilog.Sinks.File:用于将日志写入文件。

在项目目录下运行以下命令:

bash

dotnet add package Serilog.AspNetCore
dotnet add package Serilog.Sinks.File

2. 配置 Serilog

在 Program.cs 中配置 Serilog,指定日志输出到 D 盘的文件。

修改 Program.cs
csharp

using Serilog;var builder = WebApplication.CreateBuilder(args);// 配置 Serilog
Log.Logger = new LoggerConfiguration().WriteTo.Console() // 保留控制台日志输出.WriteTo.File("D:/logs/app.log", rollingInterval: RollingInterval.Day) // 日志保存到 D 盘.CreateLogger();// 将 Serilog 添加到应用程序中
builder.Host.UseSerilog();// 其他服务配置
builder.Services.AddControllers();var app = builder.Build();// 使用 Serilog 记录启动日志
app.UseSerilogRequestLogging();app.MapControllers();app.Run();

说明:
.WriteTo.Console():保留控制台日志输出(如果你不需要控制台日志,可以去掉这一行)。

.WriteTo.File(“D:/logs/app.log”, rollingInterval: RollingInterval.Day):将日志写入 D 盘的 logs/app.log 文件,并按天滚动生成新文件。

3. 验证日志输出

运行你的应用程序,日志将会同时输出到控制台和 D 盘的 logs/app.log 文件中。

日志文件位置:
日志文件会保存在 D:/logs/app.log。

如果按天滚动,每天会生成一个新的日志文件,例如:

app20231001.log

app20231002.log

4. 高级配置(可选)

如果你需要更高级的日志配置,例如限制日志文件大小、压缩日志文件等,可以参考以下配置:

csharp

Log.Logger = new LoggerConfiguration().WriteTo.Console().WriteTo.File("D:/logs/app.log",rollingInterval: RollingInterval.Day,fileSizeLimitBytes: 10 * 1024 * 1024, // 限制文件大小为 10MBrollOnFileSizeLimit: true,retainedFileCountLimit: 30 // 保留最近 30 个日志文件).CreateLogger();

5. 测试日志记录

在你的 FingerController 中,使用 ILogger 记录日志:

C#

[HttpPost("OpenDev")]
public bool OpenDev()
{_logger.LogInformation("Opening device...");return _fingerService.IOpenDev();
}

运行应用程序后,检查 D 盘的 logs/app.log 文件,确认日志是否正确写入。

总结
通过使用 Serilog,你可以轻松地将 ASP.NET Core 的日志保存到 D 盘的文件中。Serilog 提供了丰富的配置选项,可以满足各种日志记录需求。


1. 引入 ILogger

首先,你需要通过依赖注入(Dependency Injection, DI)将 ILogger 注入到 FingerService 中。

修改 FingerService 构造函数
csharp
复制

using Microsoft.Extensions.Logging;public class FingerService : IFingerService
{private readonly ILogger<FingerService> _logger;public FingerService(ILogger<FingerService> logger){_logger = logger;// 初始化指纹捕获缓冲区FPBuffer = new byte[mfpWidth * mfpHeight];}// 其他代码...
}

2. 在方法中使用日志记录

在你的方法中,使用 _logger 记录关键操作和错误信息。

示例:IOpenDev 方法
csharp
复制

public bool IOpenDev()
{_logger.LogInformation("Opening fingerprint device...");int ret = zkfp.ZKFP_ERR_OK;if (IntPtr.Zero == (mDevHandle = zkfp2.OpenDevice(0))){_logger.LogError("Failed to open fingerprint device.");return false;}if (IntPtr.Zero == (mDBHandle = zkfp2.DBInit())){_logger.LogError("Failed to initialize database.");zkfp2.CloseDevice(mDevHandle);mDevHandle = IntPtr.Zero;return false;}_logger.LogInformation("Fingerprint device and database initialized successfully.");return true;
}

在 ASP.NET Core 中,默认的日志级别是 Information,这意味着所有 Information 级别及以上的日志都会被记录。

日志内容包括:

应用程序启动信息。

HTTP 请求的详细信息(如请求路径、请求方法、响应状态码、响应时间等)。

控制器方法的执行过程。

如何只记录我手动写的日志呢

 // 配置 SerilogLog.Logger = new LoggerConfiguration().WriteTo.Console() // 保留控制台日志输出.WriteTo.File("D:/Log/fingerprint/finger.log",         //将日志写入 D 盘的 logs/app.log 文件rollingInterval: RollingInterval.Day,   //并按天滚动生成新文件。fileSizeLimitBytes: 10 * 1024 * 1024,  // 文件大小限制为 10MBrollOnFileSizeLimit: false, // 当文件大小达到限制时,创建新文件    //false:当文件大小达到限制时,继续向当前文件写入日志(默认行为)。retainedFileCountLimit: 30 // 保留最近 30 个日志文件).Filter.ByExcluding(logEvent =>logEvent.Properties.TryGetValue("SourceContext", out var sourceContext) && sourceContext.ToString().Contains("Microsoft")) // 过滤掉 Microsoft 的日志.CreateLogger();

加上一个过滤即可!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词