Serilog + Seq 搭建日志平台
Docker部署Seq日志平台
Dokce部署
镜像地址:
https://hub.docker.com/r/datalust/seq
pull镜像
docker pull datalust/seq
设置seq Admin密码,起站点用到的密码必须要Hash
SeqPwd=$(echo '123456' | docker run --rm -i datalust/seq config hash)
起站点
# 新建磁盘日志目录文件夹
mkdir -p /docker/seq/data
docker run --name seq -d -e ACCEPT_EULA=Y -e SEQ_FIRSTRUN_ADMINPASSWORDHASH="$SeqPwd" -v /docker/seq/data:/data --memory=512m --memory-swap=512m -e SEQ_CACHE_SYSTEMRAMTARGET=0 -p 8001:80 -p 5341:5341 datalust/seq
参数 | 备注 |
---|---|
SEQ_FIRSTRUN_ADMINPASSWORDHASH | Seq平台登录的admin密码,必须经过Hash处理后的 |
-v /docker/seq/data:/data | 磁盘挂载,日志持久化 |
memory | 限制最大内存 |
SEQ_CACHE_SYSTEMRAMTARGET | 不使用缓存 |
-p 8001:80 -p 5341:5341 | 80映射端口是http端口,5341是gRPC端口。80是UI管理界面,5341是给程序调用的 |
容器Run起来之后,浏览器访问http://192.168.1.5:8001/
Seq登录界面。使用刚才配置的账号密码admin
+123456
登录
登录之后就可以看到日志面板
创建Api key
登录seq管理平台,点击"setting",第一个菜单就是 Api Key,点击“Add Api Key”进行添加
Serilog记录日志并输出至Seq
Serilog 相关文档参考这篇博客
新建一个ASP.NET Core Web项目,添加以下Neget包
Serilog.AspNetCore
Serilog.Sinks.Seq
Program.cs
添加Serilog
并添加Seq
相关配置
using Serilog;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Host.UseSerilog((hostingContext, loggerConfiguration) =>
{
loggerConfiguration
.Enrich.FromLogContext()
.WriteTo.Console()
.WriteTo.Debug()
//添加Seq
.WriteTo.Seq("http://192.168.1.5:5341", apiKey: "KIFLPG...");
});
var app = builder.Build();
app.UseAuthorization();
//添加中间件简化请求日志记录
app.UseSerilogRequestLogging();
app.MapControllers();
app.Run();
WeatherForecastController.cs
写入日志并访问API
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System;
namespace WebApplication1.Controllers
{
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
[HttpGet]
public string Get()
{
_logger.LogInformation("我爱中国");
_logger.LogInformation(Guid.NewGuid().ToString());
return Guid.NewGuid().ToString();
}
}
}
Seq面板查看日志