技术思绪摘录旅行
本文主要利用之前安装的ES,直接把日志写到ES中,这里其实只用到了EK,L还没用上,下一篇文章再介绍其他方式

一、ELK日志归集之Elasticsearch安装(CentOS 7.5)

二、ELK日志归集之LogStash安装(CentOS 7.5)

三、ELK日志归集之Kibana安装(CentOS 7.5)

四、.NET5 WebApi 直接输出到Elasticsearch

五、.NET5 WebApi 日志利用Logstash收集到Elasticsearch中


1、创建一个.NET5 WebApi项目

2、添加引用

Serilog.Sinks.Elasticsearch
Serilog.AspNetCore

3、修改Program.cs

    public class Program
    {
        public static void Main(string[] args)
        {
            Log.Logger = new LoggerConfiguration()
                .Enrich.FromLogContext()
                .CreateLogger();
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseSerilog((ctx, config) =>
                    {
                        config.ReadFrom.Configuration(ctx.Configuration);
                    });
                    webBuilder.UseStartup();
                });
    }

4、修改配置文件appsettings.json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "Serilog": {
    // 日志输出级别Trace -》Debug-》 Info -》Warn-》 Error-》 Fatal
    "MinimumLevel": {
      "Default": "Debug",
      "Override": {
        //日志调用类命名空间如果以 Microsoft 开头,覆盖日志输出最小级别为 Information
        "Microsoft": "Debug",
        //简化日志
        "System": "Debug",
        "Microsoft.AspNetCore": "Debug",
        "ElkDemo.Api.Controllers": "Debug"
      }
    },
    "WriteTo": [
      {
        "Name": "Console",
        "Args": {
          "outputTemplate": "[{Timestamp:yyyy-MM-dd HH:mm:ss.fff} {Level:u3}] {Message:lj}{NewLine}{Exception}"
        }
      },
      {
        "Name": "File",
        "Args": {
          "path": "Logs/log.log",
          "rollingInterval": "Day", // "创建文件的类别,可以是分钟,小时,天,月,年": null,
          "retainedFileCountLimit": 60, // "--设置日志文件个数最大值,默认31,意思就是只保留最近的31个日志文件", "等于null时永远保留文件": null,
          "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss.fff} [{Level:u3}] {Message:lj}{NewLine}{Exception}",
          "fileSizeLimitBytes": 3145728, //设置单个文件大小为3M 默认1G
          "rollOnFileSizeLimit": true //超过文件大小后创建新的
        }
      },
      {
        "Name": "Elasticsearch",
        "Args": {
          "nodeUris": "http://10.3.1.171:9200;",
          "indexFormat": "ElkDemo-index-1-{0:yyyy.MM}",
          "bufferBaseFilename": "./logs/buffer"
        }
      }
    ]
  }
}

注意核心配置:nodeUris配置的es的地址

5、添加测试数据

[ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : ControllerBase
    {
        private static readonly string[] Summaries = new[]
        {
            "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
        };

        private readonly ILogger_logger;

        public WeatherForecastController(ILoggerlogger)
        {
            _logger = logger;
        }

        [HttpGet]
        public IEnumerableGet()
        {

            _logger.LogInformation("这是一条测试消息Information");

            _logger.LogError("这是一条测试消息Erro");

            _logger.LogDebug("这是一条测试消息Debug");

            var rng = new Random();
            return Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date = DateTime.Now.AddDays(index),
                TemperatureC = rng.Next(-20, 55),
                Summary = Summaries[rng.Next(Summaries.Length)]
            })
            .ToArray();
        }
    }

6、请求之后去Kibana查看

点击左侧三横图标-->Stack Management-->索引管理

image.png

能看到我们的数据记录

7、添加索引模式

点击索引模式-->创建索引模式-->下一步-->完成

image.png

8、进入检索

点击三横图标-->Discover

image.png

添加检索条件

image.png

命中两条数据,没问题

image.png

是不是感觉,找日志更快了呢

CarsonIT 微信扫码关注公众号 策略、创意、技术

留下您的脚步

 

最近评论

查看更多>>

精选推荐

阅读排行

友情打赏

请打开您的微信,扫一扫