首页 > 其他分享 >Serilog日志输出到WPF UI控件

Serilog日志输出到WPF UI控件

时间:2024-05-22 11:08:45浏览次数:25  
标签:控件 logEventSinkWrite ILogEventSinkWrite Serilog LogEvent logEvent UI messageChan

使用到日志接收器的接口 ILogEventSink

WPF+Prsim+Serilog

详细介绍链接 https://github.com/serilog/serilog/wiki/Developing-a-sink

 

 

 

 public interface ILogEventSinkWrite:ILogEventSink
 {
     LogEvent GetLogMessage();
 }
 public class LogEventSink :  ILogEventSinkWrite
 {
     private Channel<LogEvent> _messageChannel;
     public LogEventSink()
     {
         _messageChannel = Channel.CreateUnbounded<LogEvent>();
     }
     public void Emit(LogEvent logEvent)
     {
         _messageChannel.Writer.TryWrite(logEvent);
     }

     public  LogEvent GetLogMessage()
     {
         LogEvent logEvent;
          _messageChannel.Reader.TryRead(out logEvent);
         return logEvent;
     }
 }
  public class MainWindowViewModel : BindableBase
  {
      private string _title = "Prism Application";
      private readonly ILogEventSinkWrite logEventSinkWrite;

      public string Title
      {
          get { return _title; }
          set { SetProperty(ref _title, value); }
      }

      public MainWindowViewModel(ILogEventSinkWrite logEventSinkWrite)
      {
          this.logEventSinkWrite = logEventSinkWrite;
          Log.Logger = new LoggerConfiguration()
             .WriteTo.Sink(logEventSinkWrite)
             .CreateLogger();

          Log.Information("MainWindowViewModel created");

        var res=  logEventSinkWrite.GetLogMessage();
          this.Title = res.RenderMessage(); ;
      }


  }
 public partial class App
 {
     protected override Window CreateShell()
     {
         return Container.Resolve<MainWindow>();
     }

     protected override void RegisterTypes(IContainerRegistry containerRegistry)
     {
         containerRegistry.Register<ILogEventSinkWrite, LogEventSink>();
     }
 }

 

标签:控件,logEventSinkWrite,ILogEventSinkWrite,Serilog,LogEvent,logEvent,UI,messageChan
From: https://www.cnblogs.com/-Timosthetic/p/18205791

相关文章

  • Unity设置UI和Render的渲染层级
    通过给UI或物体挂载下面脚本,来设置层级usingUnityEngine;usingSystem.Collections;usingUnityEngine.UI;namespaceCommon{//设置UI和render的层级publicclassUIDepth:MonoBehaviour{publicintorder;publicboolisUI=true;......
  • 自定义分页控件
    自定义分页控件tip:该控件的样式用的是materialDesign库,需要下载Nuget包CodeXaml<UserControlx:Class="TestTool.CustomControls.PagingControl"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.mic......
  • layui laydate日期时间范围,时间默认设定为23:59:59
    在Layui中,如果你想设置日期时间选择器(datetime)的默认结束时间为当天的23:59:59,你可以使用如下代码(红色部分):laydate.render({elem:'#test10',type:'datetime',range:true,max:'{:date("Y-......
  • 自定义可移动点二维坐标轴控件
    自定义可移动点二维坐标轴控件目录路由参数坐标轴控件定义Demo路由参数X_YResultCollection为当前X轴对应Y轴值存储字典publicclassResultCollectionChangedEventArgs(RoutedEventroutedEvent,objectsource,IDictionary<double,double>resultCollection):Route......
  • GridLayout 等控件来完成多行按钮操作
     第一步,在布局文件中添加一个GridLayout控件,设置它的行列数和间距等属性,例如:<GridLayoutandroid:id="@+id/grid_layout"android:layout_width="match_parent"android:layout_height="wrap_content"android:columnCount="4"andr......
  • Asp-Net-Core开发笔记:给SwaggerUI加上登录保护功能
    前言#在SwaggerUI中加入登录验证,是我很早前就做过的,不过之前的做法总感觉有点硬编码,最近.Net8增加了一个新特性:调用MapSwagger().RequireAuthorization来保护SwaggerUI,但官方的这个功能又像半成品一样,只能使用postmancurl之类的工具带上Authorizationheader来请......
  • qt中添加多个UI界面,并在其他文件中调用该UI界面
    一、概述qt创建一个新项目时,会创建一个属于mainwindow'的主ui界面,这时如果想要创建多个窗口,可以有三种方法。第一种:使用代码创建一个新窗口,优点是灵活,缺点是麻烦,其中控件和布局都需要代码来创建。第二种:在ui设计界面使用tabwidget控件来达到多个窗口的效果,不过这种方法只能......
  • Unity制作一个BroadcastUI 跑马灯文字广播
     usingDG.Tweening;usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.UI;usingUtils;//挂在UI上面publicclassBroadcastUI:MonoBehaviour{privateboolinited=false;privateBroadcastManbm;......
  • ComfyUI使用IC-Light实现打光特效
    在线体验https://huggingface.co/spaces/lllyasviel/IC-Light国内可以用魔塔https://modelscope.cn/studios/AI-ModelScope/IC-Light/summaryComfyUIIC-Light原生插件:https://github.com/huagetai/ComfyUI-Gaffer模型下载:https://huggingface.co/lllyasviel/ic-light/tr......
  • 「实用推荐」如何为桌面 & 移动跨平台应用选择UI框架/APP架构?
    DevExpress.NETMAUIUI组件库提供了用于Android和iOS移动开发的高性能UI组件,该库包括数据网格、图表、日程、数据编辑器、CollectionView和选项卡组件。获取DevExpress.NETMAUI最新正式版下载DevExpress技术交流群10:532598169      欢迎一起进群讨论“一次编写,随处运......