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

成都企业门户网站建设电商网站建设源码

成都企业门户网站建设,电商网站建设源码,临汾外贸网站建设价格,凡客诚品公司介绍目录 一、日志Sink(接收器) 二、Trace追踪实现日志 三、日志滚动 一、日志Sink(接收器) 安装NuGet包#xff1a;Serilog Sink有很多种#xff0c;这里介绍两种#xff1a; Console接收器#xff08;安装Serilog.Sinks.Console#xff09;; File接收器#xff08;安装…目录 一、日志Sink(接收器) 二、Trace追踪实现日志 三、日志滚动 一、日志Sink(接收器) 安装NuGet包Serilog Sink有很多种这里介绍两种                 Console接收器安装Serilog.Sinks.Console;                 File接收器安装Serilog.Sinks.File; MinimumLevel最小记录级别 rollingInterval:生成日志文件周期 outputTemplate:输出日志模板 继承ILogEventSink接口实现 Emit当Sink器接收到新日志时触发 通过该接口将接收器接收的日志添加进内部日志集合 将该接口实现类实例化对象通过WriteTo.Sink(myEventSink)与Logger绑定 实现 ILogEventSink接口示例 public Liststring Logs new Liststring();private readonly ITextFormatter _formatternew MessageTemplateTextFormatter(Message:{Message} [{Level}] Location:{FilePath}[{LineNumber}]);public void Emit(LogEvent logEvent){if (logEvent ! null){var textWriternew StringWriter();_formatter.Format(logEvent, textWriter);Logs.Add(textWriter.ToString());}} Main程序 MyEventSink myEventSink new MyEventSink();string path Logs\\Error\\.txt;string outputTemplate {NewLine}Date: {Timestamp:yyyy-MM-dd HH:mm:ss.fff}\tLevel: {Level}\tCallName: {SourceContext}-{MemberName} {NewLine}Path: {FilePath}[{LineNumber}] {NewLine}Message: {Message};Log.Logger new LoggerConfiguration().Enrich.FromLogContext()//记录相关上下文信息.MinimumLevel.Debug().WriteTo.Sink(myEventSink).WriteTo.Logger(log log.Filter.ByIncludingOnly(p p.Level LogEventLevel.Error).WriteTo.File(path, rollingInterval: RollingInterval.Day, outputTemplate: outputTemplate)).WriteTo.Console().CreateLogger();Log.Warning(*****************Warning***************);Log.Logger.Information(*******************Info****************);Log.Logger.CallErrorTest(#####################Error##################);foreach (string str in myEventSink.Logs){Console.WriteLine(str);} static class LogExtension{public static void CallErrorT(this ILogger logger, string message,[CallerMemberName] string meberName ,[CallerFilePath] string filepath ,[CallerLineNumber] int lineNum 0) logger.ForContextT().ForContext(MemberName, meberName).ForContext(FilePath, filepath).ForContext(LineNumber, lineNum).Error(message);public static void CallErrorT(this ILogger logger, Exception e, string message,[CallerMemberName] string meberName ,[CallerFilePath] string filepath ,[CallerLineNumber] int lineNum 0) logger.ForContextT().ForContext(MemberName, meberName).ForContext(FilePath, filepath).ForContext(LineNumber, lineNum).Error(e, message);} 二、Trace追踪实现日志 继承抽象类TraceListener重写方法TraceEvent 注意添加监听对象Trace.Listeners.Add(this); public override void TraceEvent(TraceEventCache? eventCache, string source, TraceEventType eventType, int id, string? message){switch (eventType){case TraceEventType.Error:Log.Logger.CallErrorMyTraceListen(message);break;case TraceEventType.Warning:Log.Logger.Warning(message);break;case TraceEventType.Information:Log.Logger.Information(message);break;default:break;}} 三、日志滚动 通过ObservableCollection类的CollectionChanged事件实现日志自动滚动到底部         集合改变触发事件更改附加属性AutoScroll值值更改触发CallBack将日志滚动到底部 注意MouseEnter与MouseLeave两事件的响应原因查看日志时防止日志自动滚动到底部 DataGrid attach:ScrollHelper.AutoScroll{Binding AutoScroll}AutoGenerateColumnsFalseCanUserAddRowsFalseCanUserDeleteRowsFalseCanUserReorderColumnsFalseCanUserResizeColumnsFalseCanUserResizeRowsFalseCanUserSortColumnsFalseItemsSource{Binding LogService.Logs}i:Interaction.Triggersi:EventTrigger EventNameMouseEnteri:InvokeCommandAction Command{Binding MouseEnterCommand} //i:EventTriggeri:EventTrigger EventNameMouseLeavei:InvokeCommandAction Command{Binding MouseLeaveCommand} //i:EventTrigger/i:Interaction.TriggersDataGrid.ColumnsDataGridTextColumn Binding{Binding Time} Header时间 /DataGridTextColumn Binding{Binding Lev} Header级别 /DataGridTextColumn Binding{Binding Message} Header信息DataGridTextColumn.ElementStyleStyleSetter PropertyTextBlock.TextWrapping ValueWrap /Setter PropertyTextBlock.TextAlignment ValueLeft //Style/DataGridTextColumn.ElementStyle/DataGridTextColumn/DataGrid.ColumnsDataGrid.RowStyleStyle TargetTypeDataGridRow BasedOn{StaticResource DataGridRowStyle}Style.TriggersDataTrigger Binding{Binding Lev} ValueErrorSetter PropertyForeground ValueRed//DataTriggerDataTrigger Binding{Binding Lev} ValueWarnSetter PropertyForeground ValueOrange//DataTrigger/Style.Triggers/Style/DataGrid.RowStyle/DataGrid public LogService LogService { get; set; }LogService.GetInstance();private bool _autoScroll;public bool AutoScroll{get { return _autoScroll; }set SetProperty(ref _autoScroll, value);}[RelayCommand]public void MouseEnter(){LogService._logs.CollectionChanged - Scroll;}[RelayCommand]public void MouseLeave(){LogService._logs.CollectionChanged Scroll;}private void Scroll(object sender, NotifyCollectionChangedEventArgs e){AutoScroll !AutoScroll;}public MainWinViewModel(){LogService.OpenListen();LogService._logs.CollectionChanged Scroll;}
http://www.dnsts.com.cn/news/271440.html

相关文章:

  • 网站建设基础百度百科租门面做网站
  • 黄埔免费网站建设ios个人开发者账号多少钱
  • 各位给推荐个网站电商设计网站有哪些功能
  • 怎么查询网站开发公司浙江众安建设集团有限公司网站
  • 中文wordpress网站建网络平台要多少费用
  • 自己电脑做主机怎么做网站WordPress评论第页
  • 网站建设组织架构江门营销型网站建设多少钱
  • 广东省南粤交通投资建设有限公司网站莱芜二手房产网
  • 青岛做家纺的公司网站做标书的专业网站
  • 网站用户体验方案外贸网站建设lanscend
  • 湖北省住房城乡建设厅网站首页网站文章怎么做才能被快速收录
  • 天津市网站建设h5网页网站制作代码
  • 企业免费网站系统网址大全123
  • 专业网站建设公司推荐wordpress 迁移 图片
  • 具备网站维护与建设能力python做网站前端
  • 河南企业网站营销设计图片外链上传网站
  • 建设银行杭州分行网站长沙网站seo按天计费
  • 学做家常菜的网站 知乎网站建设要用H5的缺点
  • 树状结构的网站wordpress 3.5.1 下载
  • 获取网站全站代码asp的网站空间
  • 做网站做哪个行业好比较好的网站开发框架
  • 做外贸如何建立网站用u盘做网站
  • 做摄影和后期的兼职网站angularjs 网站模板
  • 卖域名的网站哪些好网站开发合同售后服务
  • 关键词搜索引擎网站重庆企业网站建设解决方案
  • 哪个网站衬衣做的好网站开发需要懂哪些
  • wordpress网页的源代码在哪里网站怎么做seo关键词
  • 尤溪网站建设本地做网站贵
  • 网站 建设运行情况软件定制开发企云云
  • php网站开发占比成都设计网站建设