要将日志保存到PostgreSQL中,您可以使用Serilog的PostgreSQL扩展库。下面是一个使用ASP.NET Core和Serilog将日志保存到PostgreSQL的示例代码:
Serilog
Serilog.Sinks.Console
Serilog.Sinks.PostgreSQL
Program.cs
文件中,更新CreateHostBuilder
方法以配置Serilog:using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using Serilog;
public class Program
{
public static void Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.WriteTo.PostgreSQL("your_connection_string", "your_table_name")
.CreateLogger();
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseSerilog()
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup();
});
}
appsettings.json
文件中,添加PostgreSQL连接字符串:{
"ConnectionStrings": {
"DefaultConnection": "your_connection_string"
}
}
Startup.cs
文件中,将Serilog添加到日志服务:using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Serilog;
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
// 添加日志服务
services.AddLogging(loggingBuilder =>
{
loggingBuilder.ClearProviders();
loggingBuilder.AddSerilog();
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
ILogger
接口来记录日志。例如,在控制器中:using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private readonly ILogger _logger;
public WeatherForecastController(ILogger logger)
{
_logger = logger;
}
[HttpGet]
public IEnumerable Get()
{
_logger.LogInformation("Getting weather forecast");
// ...其它代码...
return weatherForecasts;
}
}
请确保将your_connection_string
替换为您的PostgreSQL连接字符串,your_table_name
替换为您要保存日志的表名。
这样,您的日志将会保存到PostgreSQL中。