Fast.Logging
版本 3.5.32;目标 net8.0、net9.0、net10.0;依赖 Fast.Runtime。扩展 ASP.NET Core 日志、控制台格式及按级别分文件输出。
bash
dotnet add package Fast.Logging注册与选项
AddLoggingService(IServiceCollection services, IConfiguration configuration, string section = "Logging:Fast") 返回服务集合,绑定 LoggingSettingsOptions、注册控制台格式与符合级别的文件 Provider,并添加启动过滤器。
| 字段 | 后配置默认值 |
|---|---|
FileFormat | /{0:yyyy}/{0:MM}/{0:dd}/{0:HH} |
FileSizeLimit | 10485760 字节,即 10 MiB |
MiniLogLevel | LogLevel.Information,注意公开名称是 MiniLogLevel |
EnableCritical | false,Critical 文件输出另受此开关控制 |
文件名基于 logs/<level><FileFormat>.log。目录权限、容量和保留策略由宿主负责;仅安装包不保证文件成功写入。
以下为消费端 Program.cs,使用 Microsoft.NET.Sdk.Web,目标选择本页列出的 .NET 8、9 或 10,并安装上方指定包。app.Run() 表示正常宿主启动;本次文档维护不会执行它。
csharp
using Fast.Logging;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.AspNetCore.Builder;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddLoggingService(builder.Configuration);
var app = builder.Build();
app.Logger.LogInformation("Application configured");
app.MapGet("/health", () => "healthy");
app.Run();
public sealed class Worker(ILogger<Worker> logger)
{
public void Report(int count) => logger.LogInformation("Processed {Count} items", count);
}公开 API
| API / 类型 | 使用方式 |
|---|---|
Log.Information/Warning/Error/Debug/Trace/Critical | 消息与参数重载,另有 EventId、Exception 和泛型日志类别版本 |
Log.CreateLogger<T>() | 返回 ILogger,依赖模块的服务上下文 |
Log.CreateLoggerFactory(Action<ILoggingBuilder> configure = null) | 创建工厂;调用者注意工厂生命周期与释放 |
Log.ScopeContext(...) | 接收字典、Action<LogContext> 或 LogContext,返回 (ILogger logger, IDisposable scope);必须释放 scope |
Log.Default() / StringLoggingPart | 构造链式日志片段,最终按公开链式 API 输出 |
LogContext、LogContextExtension | 结构化日志上下文 |
LogMessage、LogMessageExtension、LoggerFormatter | 日志消息与格式化支持 |
LoggingContext | 框架日志上下文入口,不替代请求作用域 |
控制台格式器通过 Provider 提供的 TextWriter 写入;重定向与颜色由 Provider 协调。文件与异常输出可能包含调用方传入的数据,业务代码需在进入日志前处理敏感字段,不能依赖格式器自动删除凭据。
