使用 UDP 协议发送日志

自定义好的查询 key 存储数据,尽量不要使用 graylog2-server 服务端格式化日志再存储

Ubuntu 安装服务端

sudo apt-get update && sudo apt-get upgrade
sudo apt-get install apt-transport-https openjdk-8-jre-headless uuid-runtime pwgen

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list
sudo apt-get update
sudo apt-get install -y mongodb-org

sudo systemctl daemon-reload
sudo systemctl enable mongod.service
sudo systemctl restart mongod.service
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
sudo apt-get update && sudo apt-get install elasticsearch
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl restart elasticsearch.service

wget https://packages.graylog2.org/repo/packages/graylog-2.4-repository_latest.deb
sudo dpkg -i graylog-2.4-repository_latest.deb
sudo apt-get update && sudo apt-get install graylog-server

sudo systemctl daemon-reload
sudo systemctl enable graylog-server.service
sudo systemctl start graylog-server.service

docker :http://docs.graylog.org/en/2.4/pages/installation/docker.html

ASP.NET CORE 2 集成

nuget install Gelf.Extensions.Logging

public static IWebHost BuildWebHost(string[] args)
{
return WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.ConfigureLogging((context, builder) =>
{
// Read GelfLoggerOptions from appsettings.json.
builder.Services.Configure<GelfLoggerOptions>(context.Configuration.GetSection("Graylog")); // Optionally configure GelfLoggerOptions further.
builder.Services.PostConfigure<GelfLoggerOptions>(options =>
options.AdditionalFields["machine_name"] = Environment.MachineName); // Read Logging settings from appsettings.json and add providers.
builder.AddConfiguration(context.Configuration.GetSection("Logging"))
.AddConsole()
.AddDebug()
.AddGelf();
})
.Build();
}

非 .net core 环境也可以使用 NLog 集成

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="false"
internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log"> <extensions>
<add assembly="EasyGelf.NLog"/>
</extensions> <targets async="true">
<!-- https://github.com/NLog/NLog/wiki/File-Target
${aspnet-session:Variable=SESSION.UserName:EvaluateAsNestedProperties=true}:${aspnet-session:Variable=SESSION.HotelCd:EvaluateAsNestedProperties=true}:${aspnet-session:Variable=SESSION.HotelName:EvaluateAsNestedProperties=true} ${aspnet-request-url:IncludeQueryString=true}
-->
<!--
Write events to a file with the date in the filename. -->
<target name="f"
xsi:type="File"
fileName="${basedir}/logs/${shortdate}/${level}.log"
layout="${longdate} ${aspnet-MVC-Controller} ${aspnet-MVC-Action} ${threadid:padding=2} ${level:uppercase=true:padding=2} ${logger:shortName=true} ${message} ${exception:format=tostring}"
archiveFileName="${shortdate}/log.{#}.txt"
archiveEvery="Day"
archiveNumbering="Rolling"
maxArchiveFiles="7"
concurrentWrites="true"
createDirs="true"
autoFlush="true"
encoding="utf-8"/>
<!--
Write events to the graylog. -->
<target name="GelfUdp"
xsi:type="GelfUdp"
facility="ProjectName"
remoteAddress="192.168.1.1"
remotePort="12201"
layout="${message}">
<parameter name="level" layout="${level}" />
<parameter name="thread_id" layout="${threadid}" />
<parameter name="controller" layout="${aspnet-MVC-Controller}" />
<parameter name="action" layout="${aspnet-MVC-Action}" />
<parameter name="create_time" layout="${longdate}" />
</target>
</targets>
<rules>
<!-- add your logging rules here -->
<!--
Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace) to "f" -->
<logger name="*" minlevel="Debug" writeTo="f" />
<!--<logger name="*" minlevel="Info" writeTo="GelfUdp" />-->
</rules>
</nlog>

REFER:

https://github.com/aspnet/Logging
https://github.com/mattwcole/gelf-extensions-logging
https://github.com/GokGokalp/NLog.Web.AspNetCore.Targets.Gelf
https://blog.takipi.com/how-to-choose-the-right-log-management-tool/
http://www.cnblogs.com/RainingNight/p/asp-net-core-logging-elasticsearch-kibana.html
Elasticsearch 疑难解惑
http://www.cnblogs.com/clonen/p/8116386.html

ASP.NET Core 中使用 GrayLog 记录日志的更多相关文章

  1. ASP.NET Core中使用Graylog记录日志

    以下基于.NET Core 2.1 定义GrayLog日志记录中间件: 中间件代码: public class GrayLogMiddleware { private readonly Request ...

  2. ASP.NET Core:ASP.NET Core中使用NLog记录日志

    一.前言 在所有的应用程序中,日志功能是不可或缺的模块,我们可以根据日志信息进行调试.查看产生的错误信息,在ASP.NET Core中我们可以使用log4net或者NLog日志组件来实现记录日志的功能 ...

  3. Asp.Net Core中使用NLog记录日志

    2019/10/28, Asp.Net Core 3.0, NLog 4.6.7, NLog.Web.AspNetCore 4.9.0 摘要:NLog在asp.net网站中的使用,NLog日志写入数据 ...

  4. Asp.Net Core中利用Seq组件展示结构化日志功能

    在一次.Net Core小项目的开发中,掌握的不够深入,对日志记录并没有好好利用,以至于一出现异常问题,都得跑动服务器上查看,那时一度怀疑自己肯定没学好,不然这一块日志不可能需要自己扒服务器日志来查看 ...

  5. 在Asp.Net Core中集成Kafka(中)

    在上一篇中我们主要介绍如何在Asp.Net Core中同步Kafka消息,通过上一篇的操作我们发现上面一篇中介绍的只能够进行简单的首发kafka消息并不能够消息重发.重复消费.乐观锁冲突等问题,这些问 ...

  6. 如何在 ASP.Net Core 中使用 Serilog

    记录日志的一个作用就是方便对应用程序进行跟踪和排错调查,在实际应用上都是引入 日志框架,但如果你的 日志文件 包含非结构化的数据,那么查询起来将是一个噩梦,所以需要在记录日志的时候采用结构化方式. 将 ...

  7. ASP.NET Core 中的那些认证中间件及一些重要知识点

    前言 在读这篇文章之间,建议先看一下我的 ASP.NET Core 之 Identity 入门系列(一,二,三)奠定一下基础. 有关于 Authentication 的知识太广,所以本篇介绍几个在 A ...

  8. Asp.net Core中使用Session

    前言 2017年就这么悄无声息的开始了,2017年对我来说又是特别重要的一年. 元旦放假在家写了个Asp.net Core验证码登录, 做demo的过程中遇到两个小问题,第一是在Asp.net Cor ...

  9. 在ASP.NET Core中使用百度在线编辑器UEditor

    在ASP.NET Core中使用百度在线编辑器UEditor 0x00 起因 最近需要一个在线编辑器,之前听人说过百度的UEditor不错,去官网下了一个.不过服务端只有ASP.NET版的,如果是为了 ...

随机推荐

  1. ZOJ 2132 The Most Frequent Number (贪心)

    题意:给定一个序列,里面有一个数字出现了超过 n / 2,问你是哪个数字,但是内存只有 1 M. 析:首先不能开数组,其实也是可以的了,后台数据没有那么大,每次申请内存就可以过了.正解应该是贪心,模拟 ...

  2. js,javascript,打印对象,object

    function writeObj(obj){ var description = ""; for(var i in obj){ var property=obj[i]; desc ...

  3. 20155205 2016-2017-2 《Java程序设计》第9周学习总结

    20155205 2016-2017-2 <Java程序设计>第9周学习总结 教材学习内容总结 第十六章 JDBC简介 厂商在实现JDBC驱动程序时,依方式可将驱动程序分为四种类型: JD ...

  4. WordPaster2产品介绍

    更新WordParser组件,集成ImagePaster组件功能.完善粘贴剪帖板图片,粘贴电脑图片文件,粘贴word,粘贴excel逻辑. 大幅度优化和精简js代码,js代码行数从1932行减少到97 ...

  5. WordPaster-HDwik5.0整合教程

    示例下载:http://yunpan.cn/Q9ufQGuFMK34r 1.上传WordPaster文件夹 2.上传upload.php文件,这个文件负责接收控件上传的图片,并保存到uploads文件 ...

  6. 2018-01-13 view绘制流程-activity启动流程-window-decorView-ViewRootImpl关系

    1.activity启动流程: https://www.jianshu.com/p/927ca995bca6 http://blog.csdn.net/qian520ao/article/detail ...

  7. MATLAB相关快捷键以及常用函数

    MATLAB快捷键大全 F1帮助 F2改名F3搜索 F4地址 F5刷新 F6切换 F10菜单 CTRL+A全选 CTRL+C复制 CTRL+X剪切 CTRL+V粘贴 CTRL+Z撤消 CTRL+O打开 ...

  8. POJ3181--Dollar Dayz(动态规划)

    Farmer John goes to Dollar Days at The Cow Store and discovers an unlimited number of tools on sale. ...

  9. noip第23课作业

    1.   营救 铁塔尼号遇险了!他发出了求救信号.距离最近的哥伦比亚号收到了讯息,时间就是生命,必须尽快赶到那里. 通过侦测,哥伦比亚号获取了一张海洋图.这张图将海洋部分分化成n*n个比较小的单位,其 ...

  10. Codeforces821A Okabe and Future Gadget Laboratory 2017-06-28 14:55 80人阅读 评论(0) 收藏

    A. Okabe and Future Gadget Laboratory time limit per test 2 seconds memory limit per test 256 megaby ...