.net6 webapi依赖注入ILogger<T>的示例代码
时间: 2024-09-24 13:11:00 浏览: 14
在.NET 6 Web API项目中,通常我们会使用依赖注入(DI)来注入`ILogger<T>`。以下是一个基本的示例,展示了如何在Startup.cs文件中配置ILogger,并将其注入到一个控制器类中:
```csharp
using Microsoft.Extensions.Logging;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.EntityFrameworkCore;
using YourApp.Controllers; // 这里替换为你实际的控制器命名空间
namespace YourAppName
{
public class Startup
{
private readonly IWebHostEnvironment _hostingEnvironment;
public Startup(IWebHostEnvironment hostingEnvironment)
{
_hostingEnvironment = hostingEnvironment;
}
// 在ConfigureServices方法中注入ILogger<T>
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<YourDbContext>(options =>
options.UseSqlServer(_hostingEnvironment.GetConnectionString("DefaultConnection")));
// 注入ILogger<T>,这里以ControllerName为例,T应替换为实际的类名
services.AddSingleton<ILogger<YourController>, MyCustomLogger>();
services.AddControllers();
}
// 在Configure方法中启用日志中间件
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers(); // 映射HTTP请求到控制器
});
}
}
}
// 在你的控制器类中使用注入的ILogger<T>
public class YourController : ControllerBase
{
private readonly ILogger<YourController> _logger;
public YourController(ILogger<YourController> logger)
{
_logger = logger;
}
// 控制器方法示例
public IActionResult YourAction()
{
_logger.LogInformation("Action started.");
// ...业务逻辑...
_logger.LogInformation("Action completed successfully.");
return Ok();
}
}
```
在这个例子中,`MyCustomLogger`是你自定义的日志实现,如果不需要,则可以直接使用`Microsoft.Extensions.Logging.Abstractions.NullLogger<T>`作为默认的无操作日志处理器。记住,`T`应该是你想要日志的实际控制器类名。