ASP.NET Core 中使用 GrayLog 记录日志
使用 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 pwgensudo 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-orgsudo 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.servicewget 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-serversudo systemctl daemon-reload
sudo systemctl enable graylog-server.service
sudo systemctl start graylog-server.servicedocker :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 记录日志的更多相关文章
- ASP.NET Core中使用Graylog记录日志
以下基于.NET Core 2.1 定义GrayLog日志记录中间件: 中间件代码: public class GrayLogMiddleware { private readonly Request ...
- ASP.NET Core:ASP.NET Core中使用NLog记录日志
一.前言 在所有的应用程序中,日志功能是不可或缺的模块,我们可以根据日志信息进行调试.查看产生的错误信息,在ASP.NET Core中我们可以使用log4net或者NLog日志组件来实现记录日志的功能 ...
- 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日志写入数据 ...
- Asp.Net Core中利用Seq组件展示结构化日志功能
在一次.Net Core小项目的开发中,掌握的不够深入,对日志记录并没有好好利用,以至于一出现异常问题,都得跑动服务器上查看,那时一度怀疑自己肯定没学好,不然这一块日志不可能需要自己扒服务器日志来查看 ...
- 在Asp.Net Core中集成Kafka(中)
在上一篇中我们主要介绍如何在Asp.Net Core中同步Kafka消息,通过上一篇的操作我们发现上面一篇中介绍的只能够进行简单的首发kafka消息并不能够消息重发.重复消费.乐观锁冲突等问题,这些问 ...
- 如何在 ASP.Net Core 中使用 Serilog
记录日志的一个作用就是方便对应用程序进行跟踪和排错调查,在实际应用上都是引入 日志框架,但如果你的 日志文件 包含非结构化的数据,那么查询起来将是一个噩梦,所以需要在记录日志的时候采用结构化方式. 将 ...
- ASP.NET Core 中的那些认证中间件及一些重要知识点
前言 在读这篇文章之间,建议先看一下我的 ASP.NET Core 之 Identity 入门系列(一,二,三)奠定一下基础. 有关于 Authentication 的知识太广,所以本篇介绍几个在 A ...
- Asp.net Core中使用Session
前言 2017年就这么悄无声息的开始了,2017年对我来说又是特别重要的一年. 元旦放假在家写了个Asp.net Core验证码登录, 做demo的过程中遇到两个小问题,第一是在Asp.net Cor ...
- 在ASP.NET Core中使用百度在线编辑器UEditor
在ASP.NET Core中使用百度在线编辑器UEditor 0x00 起因 最近需要一个在线编辑器,之前听人说过百度的UEditor不错,去官网下了一个.不过服务端只有ASP.NET版的,如果是为了 ...
随机推荐
- .net升级到4.0之后,出现;System.Windows, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798
今天在做从Silverlight页中跳转到aspx页的时候,出现错误: 第一次跳转的时候就出现这个错误,然后在点跳转或者刷新这个错误页面,问题就没有了. 解决方案: 在C:\Program Files ...
- share pool 管理机制
Library cache是Shared pool的一部分,它几乎是Oracle内存结构中最复杂的一部分,主要存放shared curosr(SQL)和PLSQL对象(function,procedu ...
- (数论)LightOJ -- 1245
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=98634#problem/B(acm14) Description I was tryin ...
- 《mysql必知必会》学习_第12章_20180801_欢
第12章:汇总数据 P76 avg()函数求平均值 select avg(prod_price) as avg_price from products; #计算prod_price的平均值,并且命名为 ...
- iOS 使用代码创建约束,实现自动布局
///与下面约束对象属性截图相对应//使用Auto Layout约束,禁止将Autoresizing Mask转换为约束 [self.funcView setTranslatesAutoresizin ...
- http发送请求方式;分为post和get两种方式
http发送请求方式:分为post和get两种方式
- [HTML5]如何使用移动设备的方向定位器
HTML5 Rocks Show navigation Table of Contents Home Tutorials Updates Table of Contents Introduction ...
- 一些仪器的解码程序(delphi)
http://www.jiandande.com/html/ITzixun-jishu/Lisyanjiuyuan/2013/0204/1600_3.html 看了后觉得不错,可能有需要的 ----- ...
- [leet code 135]candy
1 题目 There are N children standing in a line. Each child is assigned a rating value. You are giving ...
- winform最小化后重复进load事件原因
最近编写一个工具发现的问题,窗体不论是最小化还是进入托盘,重新打开的时候都会进入控件load事件. 产生这个现象的条件是: 1.使用了用户控件,在控件中使用了load事件 2.在主窗体中,隐藏或显示任 ...