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

烟台网站推广哪家好dw做的网站怎么上传图片

烟台网站推广哪家好,dw做的网站怎么上传图片,湖北省建设教育协会网站,精品课程网站建设意义动手造轮子#xff1a;给微软的日志框架写一个基于委托的日志提供者Intro微软的日志框架现在已经比较通用#xff0c;有时候我们不想使用外部的日志提供者#xff0c;但又希望提供一个比较简单的委托就可以实现日志记录#xff0c;于是就有了后面的探索和实现。Solution基于… 动手造轮子给微软的日志框架写一个基于委托的日志提供者Intro微软的日志框架现在已经比较通用有时候我们不想使用外部的日志提供者但又希望提供一个比较简单的委托就可以实现日志记录于是就有了后面的探索和实现。Solution基于委托的 LoggerProvider 实现代码:自定义 Logger微软的日志框架中记录日志是通过 ILogger 来做的扩展支持其他日志框架的时候也需要实现相应的 ILogger 来适配ILoggerProvider 会需要实现创建 ILogger 的接口 CreateLogger(stringcategoryName) 所以我们可以先来实现对应的 ILogger实现如下这里的实现简单化处理默认处理所有级别的日志如果要设定日志级别可以通过日志的 Fliter 来做这里就不做检查和限制了private class DelegateLogger : ILogger {private readonly string _categoryName;private readonly Actionstring, LogLevel, Exception, string _logAction;public DelegateLogger(string categoryName, Actionstring, LogLevel, Exception, string logAction){_categoryName categoryName;_logAction logAction;}public void LogTState(LogLevel logLevel, EventId eventId, TState state, Exception exception, FuncTState, Exception, string formatter){if (null ! _logAction){var msg formatter(state, exception);_logAction.Invoke(_categoryName, logLevel, exception, msg);}}public bool IsEnabled(LogLevel logLevel){return true;}public IDisposable BeginScopeTState(TState state){return NullScope.Instance;} } 自定义 ILoggerProvider有了 ILogger 之后接着我们来定义我们的 ILoggerProvider这里我们针对 Logger 名称CategoryName做了区分如果不关注 Logger 名称的话也可以使用同一个 Logger 这样就不需要下面的并发字典了只用一个 ILogger 对象就可以了可以根据自己的需要进行定制实现代码如下[ProviderAlias(Delegate)] public class DelegateLoggerProvider : ILoggerProvider {private readonly Actionstring, LogLevel, Exception, string _logAction;private readonly ConcurrentDictionarystring, DelegateLogger _loggers new ConcurrentDictionarystring, DelegateLogger();public DelegateLoggerProvider(Actionstring, LogLevel, Exception, string logAction){_logAction logAction;}public void Dispose(){_loggers.Clear();}public ILogger CreateLogger(string categoryName){return _loggers.GetOrAdd(categoryName, category new DelegateLogger(category, _logAction));} } 定义扩展方法为了方便使用我们需要定义两个扩展方法来优化我们使用的方式定义 ILoggerFactory 的扩展方法/// summary /// AddDelegateLoggerProvider /// /summary /// param nameloggerFactoryloggerFactory/param /// param namelogActionlogAction/param /// returnsloggerFactory/returns public static ILoggerFactory AddDelegateLogger(this ILoggerFactory loggerFactory, Actionstring, LogLevel, Exception, string logAction) {loggerFactory.AddProvider(new DelegateLoggerProvider(logAction));return loggerFactory; } 定义 ILoggingBuilder 的扩展方法public static ILoggingBuilder AddDelegateLogger(this ILoggingBuilder loggingBuilder,Actionstring, LogLevel, Exception, string logAction) {return loggingBuilder.AddProvider(new DelegateLoggerProvider(logAction)); } 使用示例ILoggerFactory loggerFactory new LoggerFactory(); //loggerFactory.AddConsole(); loggerFactory.AddDelegateLogger((category, logLevel, exception, msg) {Console.WriteLine(${category}:[{logLevel}] {msg}\n{exception});} ); 日志输出效果如下Referencehttps://github.com/WeihanLi/WeihanLi.Common/blob/dev/src/WeihanLi.Common/Logging/MicrosoftLoggingLoggerExtensions.cshttps://github.com/WeihanLi/WeihanLi.Common/blob/dev/samples/DotNetCoreSample/Program.cs#L83
http://www.zqtcl.cn/news/736119/

相关文章:

  • 网站建设微信托管wordpress p=
  • 专业手机网站制作哪家好吉林建筑大学本科招生网
  • 建立一个网站需要哪些google和百度等相关网站的广告词
  • 手机开发网站教程做古建的那些网站比较适合
  • 网站建设公司的前景长沙商城网站开发
  • 大型网站tag标签 索引自己做网站需要哪些软件
  • 石排做网站万网网站备案流程
  • 南京建设银行网站首页简单的ui界面制作
  • 门户网站 建设 如何写如何布置网站
  • 网站前台功能模块介绍建设银行信用卡网站是哪个好
  • 用python做网站我那些网站开发开发语言
  • 建设网站怎样做安卓app软件公司
  • 重庆seo整站优化效果上海城建建设官方网站
  • 做淘宝要网站兰州画册设计
  • 外贸网站排行榜前十名电影网站标题怎么做流量多
  • 网站建设吉金手指专业13网站备案完成后不解析
  • 社保网站减员申报怎么做长春建筑网站
  • 网站开发用原生wordpress读者墙
  • 食品网站网页设计成都建网页
  • 网站建设 珠海专业团队表情包张伟
  • 建设铝合金窗网站.net制作网站开发教程
  • 网站后台服务器内部错误wordpress 多级菜单
  • 怎样更新网站内容怎么查看网站是哪家公司做的
  • 建设网站网站建站建立一个网站平台需要多少钱
  • 学校网站模板 html网站建设技术路线
  • 图片网站如何做百度排名深入挖掘wordpress
  • 网站建设的前景网站建设分为哪三部分
  • 房地产公司网站下载校园二手信息网站建设
  • 有关网站空间不正确的说法是设计和建设企业网站心得和体会
  • 个人网站前置审批项怎么做投票 网站