当前位置: 首页 > news >正文

永和建设集团有限公司网站网站推广积分

永和建设集团有限公司网站,网站推广积分,浙江省人才网官方网站建设厅招聘,个人建设什么网站好NLog是.Net中最流行的日志记录开源项目(之一)#xff0c;它灵活、免费、开源官方支持文件、网络(TCP、UDP)、数据库、控制台等输出社区支持Elastic、Seq等日志平台输出实时日志需求在工业物联网等特定场景下需要实时获取日志信息工业物联网领域常用的是mqtt协议那我们就使用NL… NLog是.Net中最流行的日志记录开源项目(之一)它灵活、免费、开源官方支持文件、网络(TCP、UDP)、数据库、控制台等输出社区支持Elastic、Seq等日志平台输出实时日志需求在工业物联网等特定场景下需要实时获取日志信息工业物联网领域常用的是mqtt协议那我们就使用NLog 自定义一个Target将日志输出到MqttServerWeb通过Mqtt(websocket)实时获取日志而不是传统的通过WebApi轮询日志NLog自定义Target官方文档介绍了如何自定义Target可以获取到一串日志消息无法获取结构化消息需要使用自定义Field来完成这部分工作/// summary /// Additional field details /// /summary [NLogConfigurationItem] public class Field {/// summary/// Name of additional field/// /summary[RequiredParameter]public string Name { get; set; }/// summary/// Value with NLog see crefNLog.Layouts.Layout/ rendering support/// /summary[RequiredParameter]public Layout Layout { get; set; }/// summary/// Custom type conversion from default string to other type/// /summary/// remarks/// see crefSystem.Object/ can be used if the see crefLayout/ renders JSON/// /remarkspublic Type LayoutType { get; set; }  typeof(string);/// inheritdoc /public override string ToString(){return $Name: {Name}, LayoutType: {LayoutType}, Layout: {Layout};} }重写Write方法protected override void Write(LogEventInfo logEvent) {//default fieldsDictionarystring, object logDictionary  new(){{ timestamp, logEvent.TimeStamp },{ level, logEvent.Level.Name },{ message, RenderLogEvent(Layout, logEvent) }};//customer fields//这里都处理为字符串了有优化空间foreach (var field in Fields){var renderedField  RenderLogEvent(field.Layout, logEvent);if (string.IsNullOrWhiteSpace(renderedField))continue;logDictionary[field.Name]  renderedField;}SendTheMessage2MqttBroker(JsonConvert.SerializeObject(logDictionary)); }使用下面将使用Nlog.Target.MQTT,演示通过web实时查看应用程序的日志。创建WebApi项目引用NLog.Target.MQTT配置文件extensionsadd assemblyNLog.Web.AspNetCore/!--add assemblyNLog.Targets.MQTT/--add assemblyNLog.Targets.MQTT/ /extensions !-- the targets to write to -- targets!-- MQTT Target  --target xsi:typeMQTT namemqtt hostlocalhost port1883 usernameUserName  passwordPassword topicloglayout${longdate}|${event-properties:itemEventId_Id:whenEmpty0}|${level:uppercasetrue}|${logger}|${message} ${exception:formattostring}|url: ${aspnet-request-url}|action: ${aspnet-mvc-action}|${callsite} field namemachine layout${machinename} /field nameprocessid layout${processid} /field namethreadname layout${threadname} /field namelogger layout${logger} /field namecallsite layout${callsite-linenumber} /field nameurl layout${aspnet-request-url} /field nameaction layout${aspnet-mvc-action} /field namelevel layout${level:uppercasetrue} /field namemessage layout${message} /field nameexception layout${exception:formattoString} //target /targets !-- rules to map from logger name to target -- ruleslogger name* minlevelTrace writeTomqtt / /rules配置MQTTServer和NLog// ... // NLog: Setup NLog for Dependency injection builder.Logging.ClearProviders(); builder.Logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace); builder.Host.UseNLog();//AddHostedMqttServer builder.Services.AddHostedMqttServer(mqttServer {mqttServer.WithoutDefaultEndpoint();}).AddMqttConnectionHandler().AddConnections();//Config Port builder.WebHost.UseKestrel(option  {option.ListenAnyIP(1883, l  l.UseMqtt());option.ListenAnyIP(80); }); var app  builder.Build();// ... //UseStaticFiles html js etc. app.UseStaticFiles(); app.UseRouting();//Websocket Mqtt app.UseEndpoints(endpoints  {//MqttServerWebSocketendpoints.MapConnectionHandlerMqttConnectionHandler(/mqtt, options {options.WebSockets.SubProtocolSelector  MqttSubProtocolSelector.SelectSubProtocol;}); }); // ...Web连接MqttServer// ...     script src./jquery.min.js/script script src./mqtt.min.js/script script src./vue.js/script // ...var client  mqtt.connect(ws://  window.location.host  /mqtt, options); client.on(connect,function() {client.subscribe(log,function(err) {if (!err) {console.log(subed!);} else {alert(subed error!);}});}); client.on(message,function(topic, message) {if (topic  log) {if (app.logs.length  50)app.logs.length  0;app.logs.unshift($.parseJSON(message.toString()));}}); // ...输出日志// ...   _logger.LogDebug(LogDebug!); _logger.LogError(new Exception(Exception Message!), LogError!);//new thread output log after 500ms Thread thread  new Thread(ThreadProc); thread.Name  My Thread; thread.Start(); // ...实时查看日志 访问/index.html8. 也可以通过Mqtt客户端订阅日志 源码及相关链接[1] Githubhttps://github.com/iioter/NLog.Targets.MQTT[2] Giteehttps://gitee.com/iioter/NLog.Targets.MQTT[3]  IoTGateway-Dochttp://iotgateway.net/blog/NLog[4] NLog自定义Targethttps://github.com/NLog/NLog/wiki/How-to-write-a-custom-target感兴趣可以关注我
http://www.yutouwan.com/news/479349/

相关文章:

  • 网站备案许可证号邯郸做网站多少钱
  • 永嘉县住房建设局网站seo网站建设哪家专业
  • 东莞大朗网站建设公司廉江网站制作
  • 有好点的网站建设公司吗阿里云域名购买流程
  • 成立网站的意义个人简历范文100字
  • 可以做ppt的网站有哪些内容做家具的企业网站
  • iis建多个网站字体+添加+wordpress
  • 温州服务网站建设好用的做微信公众号的网站
  • 网站的优化总结怎么写怎么制作视频收费观看的网页
  • 图书馆建设网站注意点完本小说做多的网站
  • 如何免费创建企业网站网站开发绩效考核
  • 温江网站制作vi设计是品牌设计吗
  • 最新网站开发需求文档域名注册后怎么建网站
  • 做网站红色和什么搭配好wordpress点赞代码
  • 做动态图表的网站莱芜职业技术学院
  • 网站如何做长尾词排名上海今天最新的新闻
  • 做的最好的紫砂网站注册商标查询网
  • 网站建设氵金手指下拉嘉兴专业做网站的公司
  • 做汤的网站有哪些网站论坛推广文案怎么做
  • 萝岗免费网站建设含关键词的网站建设
  • 程序员做电商网站的公司好吗各位大哥给个网站
  • 网站建设费 摊销处理wordpress 侧边栏 插件
  • 网站tdk建设wordpress主题seo模板
  • 做网站要不要营业执照怎么讲解网页的制作技术
  • 优服优科网站建设公司网站设计公司青岛
  • 大庆做网站的公司二手汽车手机网站模板
  • 手机微信网站怎么做的好网站icp备案证明文件
  • 厦门企业自助建站做淘客网站简单吗
  • 怎么下载网站动态图片wordpress 头像插件
  • 网站运营介绍中山做网站服务好