使用Serilog输出到ES(使用笔记)
第一步:安装Serilog
使用NuGet包安装以下组件:
Serilog.AspNetCore
Serilog.Settings.Configuration
Serilog.Sinks.Console
Serilog.Sinks.Elasticsearch
第二步:修改Program.cs文件
public class Program
{
public static readonly string Namespace = typeof(Program).Namespace;
public static readonly string AppName = Namespace.Substring(Namespace.LastIndexOf('.', Namespace.LastIndexOf('.') - ) + ); public static int Main(string[] args)
{
var configuration = GetConfiguration();
Log.Logger = CreateSerilogLogger(configuration);
try
{
Log.Information("Configuring web host ({ApplicationContext})...", AppName);
var host = BuildWebHost(configuration, args); Log.Information("Starting web host ({ApplicationContext})...", AppName);
host.Run(); return ;
}
catch (Exception ex)
{
Log.Fatal(ex, "Program terminated unexpectedly ({ApplicationContext})!", AppName);
return ;
}
finally
{
Log.CloseAndFlush();
} } private static ILogger CreateSerilogLogger(IConfiguration configuration)
{
// var seqServerUrl = configuration["Serilog:SeqServerUrl"];
return new LoggerConfiguration()
.MinimumLevel.Verbose()
.Enrich.WithProperty("ApplicationContext", AppName)
.Enrich.FromLogContext()
.WriteTo.Console(new ElasticsearchJsonFormatter())
// .WriteTo.Console()
// .WriteTo.Seq(string.IsNullOrWhiteSpace(seqServerUrl) ? "http://seq" : seqServerUrl) //写入sql
.ReadFrom.Configuration(configuration)
.CreateLogger();
} private static IConfiguration GetConfiguration()
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables(); return builder.Build();
} private static IWebHost BuildWebHost(IConfiguration configuration, string[] args) =>
WebHost.CreateDefaultBuilder(args)
.CaptureStartupErrors(false)
.UseStartup<Startup>()
.UseConfiguration(configuration)
.UseSerilog()
.Build(); }
第三步:修改appsettings.json文件
{
"Serilog": {
"Using": [ "Serilog.Sinks.Console" ],
"MinimumLevel": "Verbose",
"WriteTo": [
{ "Name": "Console" }
],
"Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId" ],
"Destructure": [
{
"Name": "ToMaximumDepth",
"Args": { "maximumDestructuringDepth": }
},
{
"Name": "ToMaximumStringLength",
"Args": { "maximumStringLength": }
},
{
"Name": "ToMaximumCollectionCount",
"Args": { "maximumCollectionCount": }
}
],
"Properties": {
"Application": "deploy-demo"
}
},
"AllowedHosts": "*"
}
第四步:打包成镜像运行
docker run -d -p : --log-driver=fluentd --link elasticsearch --log-opt fluentd-address=192.168.0.186: --network net_db --name deploydemo imagename
使用Serilog输出到ES(使用笔记)的更多相关文章
- OpenGL ES 学习笔记 - Overview - 小旋的博客
移动端图形标准中,目前 OpenGL ES 仍然是比较通用的标准(Vulkan 则是新一代),这里新开一个系列用于记录学习 OpenGL ES 的历程,以便查阅理解. OverView OpenGL ...
- OpenGL ES学习笔记(三)——纹理
首先申明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. <OpenGL ES学习笔记( ...
- 十八、.net core(.NET 6)搭建ElasticSearch(ES)系列之使用Logstash通过Rabbitmq接收Serilog日志到ES
使用Logstash通过Rabbitmq接收Serilog日志到ES 首先,要部署logstash 为了与前面的ElasticSearch版本保持一致,此处Logstash下载的版本也是7.13.1, ...
- logstash另类输出到es
filebeat配置文件: filebeat.inputs: - type: log enabled: true paths: - /opt/hkd-cloud/hkd-custom/hkd-cust ...
- 使用filebeat解析nginx的json格式日志,并且保存原始message字段的值,输出到es中并通过grafana图形化显示
1.nginx日志调成json样式 log_format json '{"@timestamp":"$time_iso8601",' '"server ...
- OpenGL ES学习笔记(一)——基本用法、绘制流程与着色器编译
首先声明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. 在Android.iOS等移动平台上 ...
- OpenGL ES学习笔记(二)——平滑着色、自适应宽高及三维图像生成
首先申明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. <Android学习笔记--O ...
- Linux Shell输出颜色字符学习笔记(附Python脚本实现自动化定制生成)
齿轮发出咔嚓一声,向前进了一格.而一旦向前迈进,齿轮就不能倒退了.这就是世界的规则. 0x01背景 造了个轮子:御剑师傅的ipintervalmerge的Python版本.觉得打印的提示信息如果是普通 ...
- ES学习笔记
ES学习 1. 安装 1.1 ES 安装配置 curl -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5. ...
随机推荐
- #001 HTML快速入门讲解
整理了下最早开始学习技术的笔记 3W1H学习法? (其他技术同理) What HTML是什么? When 什么时候使用HTML? Why 为什么使用HTMl? HOW 怎么使用HTML ...
- 评微软收购GitHub
前段时间,微软正式宣布以75亿美元收购GitHub.除了微软和GitHub以外,也许对这笔并购最在意的,正是微软的同城敌友,亚马逊.在我看来,GitHub也许是微软史上最好的收购. 75亿美元贵不贵? ...
- 021.14 IO流 管道流
用的频率不高特点:读取管道和写入管道对接,需要是用多线程技术,单线程容易死锁 使用connect方法连接两个流,实现边读编写,和node.js的管道流差不多 //##主函数位置 public stat ...
- python第八课——random模块的使用
2.2.如何获取随机整数值? 引入random模块的使用 randint(a,b)函数:作用:返回给程序一个[a,b]范围内的随机整数注意:含头含尾闭区间 思路步骤: 第一步:导入random模块到相 ...
- 4-1 R语言函数 lapply
#lapply函数 #可以循环处理列表中的每一个元素 #lapply(参数):lapply(列表,函数/函数名,其他参数) #总是返回一个列表 #sapply:简化结果 #结果列表元素长度均为1,返回 ...
- 最新版的Chrome 69.0 设置始终开启flash而不是先询问
## 69.0 之前的版本 ## 1.打开 chrome://settings/content/flash 2.禁止网站运行Flash -> 改为“Ask (Default)” 3. ...
- js中css样式兼容各个浏览器写法
在实际业务中往往需要在js中对dom添加一些样式,还需要对各个浏览器厂商的兼顾,看到一位大神写的一个方法很赞,做一个笔记 function prefixStyle(style){ var eleSty ...
- 【转】对H264进行RTP封包原理
1. 引言 H.264/AVC 是ITU-T 视频编码专家组(VCEG)和ISO/IEC 动态图像专家组(MPEG )联合组成的联合视频组(JVT)共同努力制订的新一代视频编码标准,它最大的优 ...
- 域对象 request
一)域对象: 1)request的生命周期: 从请求开始创建,到响应完成结束. 2) 作用:携带一次请求内的数据. 3)请求转发: 请求转发: 1)浏览器发送请求到服务器A,然后服务器A将请求转发到 ...
- centos7 支持中文显示(转)
centos7 支持中文显示 - kingleoric - 博客园https://www.cnblogs.com/kingleoric/p/7517753.html http://www.linuxi ...