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

什么网站的注册是动态网页设计教程下载

什么网站的注册是动态,网页设计教程下载,网站开发交流吧,网页图片去水印本文目录1. Net下日志记录2. NLog的使用 2.1 添加nuget引用NLog.Web.AspNetCore 2.2 配置文件设置 2.3 依赖配置及调用 2.4 日志类型介绍 2.5 产生的日志文件3. 基于Microsoft.Extensions.Logging封装 3.1 添加引用Microsoft.Extensions.Logging 3.2 实现… 本文目录1. Net下日志记录2. NLog的使用    2.1 添加nuget引用NLog.Web.AspNetCore    2.2 配置文件设置    2.3 依赖配置及调用    2.4 日志类型介绍    2.5 产生的日志文件3. 基于Microsoft.Extensions.Logging封装    3.1 添加引用Microsoft.Extensions.Logging    3.2 实现我们的Logger    3.3 调用WLogger2018-03-28 补充4. 总结 1.  Net下日志记录   Net Freamwork框架下在日志记录框架有很多常见的有NLog、Log4Net、Loggr和内置 Microsoft.Diagnostics.Trace/Debug/TraceSource等。Asp.Net Core 2.0下大部分框架已不支持,Microsoft提供Microsoft.Extensions.Logging供大家实现自己的记录日志框架。现在笔者了解到的NLog已支持Net Core,下面我们介绍下nlog在项目中的使用以及基于Microsoft.Extensions.Logging封装自己的日志记录类。 1.  NLog的使用   2.1添加nuget引用NLog.Web.AspNetCore      2.2配置文件设置     在Asp.Net Core 2.0项目实战项目中我们把配置文件统一放在configs文件夹中方便管理。读取时用Path.Combine(configs, nlog.config)即可。下面是nlog.config的配置。 ?xml version1.0 encodingutf-8 ? nlog xmlnshttp://www.nlog-project.org/schemas/NLog.xsdxmlns:xsihttp://www.w3.org/2001/XMLSchema-instanceautoReloadtrueinternalLogLevelWarninternalLogFileinternal-nlog.txt!--define various log targets--targets!--write logs to file--target xsi:typeFile nameallfile fileNamenlog-all-${shortdate}.loglayout${longdate}|${logger}|${uppercase:${level}}|${message} ${exception} /target xsi:typeFile nameownFile-web fileNamenlog-my-${shortdate}.loglayout${longdate}|${logger}|${uppercase:${level}}|${message} ${exception} /target xsi:typeNull nameblackhole //targetsrules!--All logs, including from Microsoft--logger name* minlevelTrace writeToallfile /!--Skip Microsoft logs and so log only own logs--logger nameMicrosoft.* minlevelTrace writeToblackhole finaltrue /logger name* minlevelTrace writeToownFile-web //rules/nlog   2.3依赖配置及调用     在startup.cs中配置日志工厂添加使用的服务配置后在项目中就可以调用。        /// summary/// 配置/// /summary/// param nameapp/param/// param nameenv/param/// param nameloggerFactory/parampublic void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory){loggerFactory.AddNLog();//添加NLog //读取Nlog配置文件这里如果是小写文件也一定是小写否则linux下不识别 env.ConfigureNLog(Path.Combine(configs, nlog.config));}        nlog调用如在Controller中调用如在HomeController中   2.4 日志类型介绍 public enum LogLevel {Debug 1,Verbose 2,Information 3,Warning 4,Error 5,Critical 6,None int.MaxValue }   2.5产生的日志文件     日志的位置默认是在bin\Debug\netcoreapp2.0下面       日志文件内容根据文件名可以很方便的区分开其中nlog-all包含的内比较多nlog-my中就只包含了我们记录日志的内容大家动手试一下。   3.基于Microsoft.Extensions.Logging封装   由于受老项目webform影响记录日志是在第三方类库dll中封装好了帮助类这样在可以在项目中任何位置方便调用这里我的nc.common工具库WLogger基于Microsoft NET Core的日志模型主要由三个核心对象构成它们分别是Logger、LoggerProvider和LoggerFactory。现在只实现了文件记录日志txt数据库模式有业务需求的朋友可自己扩展。     3.1添加引用Microsoft.Extensions.Logging     扩展微软日志记录框架,集成一个自己的Logger现在扩展的是txt形式后续可参考完善数据库模式。添加引用dll后增加配置文件并配置这里我先加在appsettings.json文件中主要是配置是否开启日志和日志记录。       3.2 实现我们的Logger     首先实现日志工厂的扩展LoggerFactoryExtensions为net core 依赖注入LoggerFactory扩张一个方法提供增加日志写文件方式的入口。 using Microsoft.Extensions.Logging;namespace NC.Common {public static class LoggerFactoryExtensions{public static ILoggerFactory AddFileLogger(this ILoggerFactory factory){factory.AddProvider(new FileLoggerProvider());return factory;}} }     然后实现ILoggerProvider接口FileLoggerProvider提供程序真正具有日志写入功能的Logger。 using Microsoft.Extensions.Logging;namespace NC.Common {public class FileLoggerProvider : ILoggerProvider{/// summary/// 默认构造函数根据Provider进此构造函数/// /summary/// param namecategoryName/param/// returns/returnspublic ILogger CreateLogger(string categoryName){return new FileLogger(categoryName);}public void Dispose(){}} }     最后实现ILogger接口FileLogger继承并进行封装方便写入文本日志。 using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.IO; using System.Text;namespace NC.Common {public class FileLogger : ILogger{private string name;private bool IsOpen;private string WPath;public FileLogger(string _name){name _name;}public IDisposable BeginScopeTState(TState state){return null;}/// summary/// 是否禁用/// /summary/// param namelogLevel/param/// returns/returnspublic bool IsEnabled(LogLevel logLevel){return true;}/// summary/// 实现接口ILogger/// /summary/// typeparam nameTState/typeparam/// param namelogLevel/param/// param nameeventId/param/// param namestate/param/// param nameexception/param/// param nameformatter/parampublic void LogTState(LogLevel logLevel, EventId eventId, TState state, Exception exception, FuncTState, Exception, string formatter){IsOpen UtilConf.GetSection(WLogger)[IsOpen] true ? true : false;if (IsOpen){//获取日志信息var message formatter?.Invoke(state, exception);//日志写入文件LogToFile(logLevel, message);}}/// summary/// 记录日志/// /summary/// param namelevel等级/param/// param namemessage日志内容/paramprivate void LogToFile(LogLevel level, string message){var filename GetFilename();var logContent GetLogContent(level, message);File.AppendAllLines(filename, new Liststring { logContent }, Encoding.UTF8);}/// summary/// 获取日志内容/// /summary/// param namelevel等级/param/// param namemessage日志内容/param/// returns/returnsprivate string GetLogContent(LogLevel level, string message){return $[{DateTime.Now.ToString(yyyy-MM-dd HH:mm:ss.h3)}]{level}|{name}|{message};}private string DirectorySeparatorChar Path.DirectorySeparatorChar.ToString();//目录分隔符/// summary/// 获取文件名/// /summaryprivate string GetFilename(){var dir ;WPath UtilConf.GetSection(WLogger)[WPath];if (WPath.IndexOf(:) -1){dir WPath;}else{//此方法不是真正的获取应用程序的当前方法而是执行dotnet命令所在目录dir Directory.GetCurrentDirectory() WPath;}if (!Directory.Exists(dir))Directory.CreateDirectory(dir);var result ${dir}/WLog-{DateTime.Now.ToString(yyyy-MM-dd)}.txt.Replace(/,DirectorySeparatorChar);return result;}} }   3.3 调用WLogger     在nc.common类库中封装好logger实现后在调用连接使用数据库在core类库中调用实例如下。     首先我们先做一下封装调用类   using Microsoft.Extensions.Logging;namespace NC.Common {public class UtilLoggerT{private static ILogger iLog;public static ILogger Log{get{if (iLog ! null) return iLog;第一种写法//ILoggerFactory loggerFactory new LoggerFactory();//loggerFactory.AddFileLogger();//iLog loggerFactory.CreateLoggerDbCommand();//第二种写法iLog new LoggerFactory().AddFileLogger().CreateLoggerT();return iLog;}set iLog value;}} }     然后在DbCommand中调用就可以直接写成       public static ILogger Log UtilLoggerDbCommand.Log;//日志记录       Log. LogInformation(string);       Log.LogError(string)     详细方法还可以参考   2018-03-28补充   日志记录与全局错误处理结合首先创建全局错误过滤类HttpGlobalExceptionFilter并在startup.cs中ConfigureServices方法下添加 services.AddMvc(options {options.Filters.Add(typeof(HttpGlobalExceptionFilter));//全局错误过滤日志}).AddControllersAsServices();   然后实现OnException方法并记录日志这样系统只要报异常日志 就会被记录下来。 using System; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.Extensions.Logging; using NC.Common;namespace NC.MVC {/// summary/// 错误处理类/// /summarypublic class HttpGlobalExceptionFilter : IExceptionFilter{private readonly IHostingEnvironment _env;public static ILogger Log UtilLoggerHttpGlobalExceptionFilter.Log;//日志记录public HttpGlobalExceptionFilter(IHostingEnvironment env){this._env env;}public ContentResult FailedMsg(string msg null){string retResult {\status\: JHEnums.ResultStatus.Failed ,\msg\:\ msg \};//, msg);string json JsonHelper.ObjectToJSON(retResult);return new ContentResult() { Content json };}public void OnException(ExceptionContext filterContext){if (filterContext.ExceptionHandled)return;//执行过程出现未处理异常Exception ex filterContext.Exception; #if DEBUGif (filterContext.HttpContext.Request.IsAjaxRequest()){string msg null;if (ex is Exception){msg ex.Message;filterContext.Result this.FailedMsg(msg);filterContext.ExceptionHandled true;return;}}this.LogException(filterContext);return; #endifif (filterContext.HttpContext.Request.IsAjaxRequest()){string msg null;if (ex is Exception){msg ex.Message;}else{this.LogException(filterContext);msg 服务器错误;}filterContext.Result this.FailedMsg(msg);filterContext.ExceptionHandled true;return;}else{//对于非 ajax 请求this.LogException(filterContext);return;}}/// summary/// 记录日志/// /summary/// param namefilterContext/paramprivate void LogException(ExceptionContext filterContext){string mid filterContext.HttpContext.Request.Query[mid];//codding 后续完善每个action带一个idvar areaName (filterContext.RouteData.DataTokens[area] null ? : filterContext.RouteData.DataTokens[area]).ToString().ToLower();var controllerName (filterContext.RouteData.Values[controller]).ToString().ToLower();var actionName (filterContext.RouteData.Values[action]).ToString().ToLower();#region --记录日志 codding 后续增加自定义字段的日志。如记录Controller/action模块ID等--Log.LogError(filterContext.Exception, 全局错误areaName areaName ,controllerName controllerName ,action actionName);#endregion}} }     4.总结   不管是生产环境还是开发环境总会碰到这样或那样的问题这时日志记录就为我们提供了记录分析问题的便利性net core 2.0下记录日志功能是最需要我们及时实现的功能这样为我们接下来的学习提供技术支撑。另外net core 生态还不完善很多功能需要我们自己动手去实现在这里希望大家多动手去实现去分享文中有不清楚或有问题欢迎留言讨论。 参考 https://msdn.microsoft.com/magazine/mt694089 https://www.cnblogs.com/artech/p/inside-net-core-logging-2.html https://www.cnblogs.com/calvinK/p/5673218.html 转载于:https://www.cnblogs.com/hmit/p/10769576.html
http://www.huolong8.cn/news/186374/

相关文章:

  • 青羊建站报价南通市优普网站建设
  • 旅游网站建设方案两百字黄山几月份去最好
  • 个人网站 备案stm32做网站服务器
  • 邯郸网站设计价格番禺网站建设制作
  • 哈尔滨网站开发建设公司电话wordpress写公式
  • 河北网站建设哪家好合肥营销网站建设价格
  • 霸州建网站湖北城乡住房建设厅网站
  • 多个网站做计划wordpress js插件开发
  • o2o网站建设最好公司排名建网站需要多久
  • 个人音乐网站免费建设推广方案策略怎么写
  • 重点专业建设网站安徽省建设工程信用信息网
  • 英文网站怎么做wordpress相册点击弹出
  • 摄影网站制作步骤html祥云网站优化
  • 做网站和推广公司wordpress 首页预览
  • 三亚网站建设费用青岛网站设计制作
  • 丽江北京网站建设互联网营销师培训课程
  • seo网站排名厂商定制网页游戏搬砖赚钱
  • 网站系统开发团队简介保险平台
  • 网站开发项目需求分析中英文网站怎么做的
  • 可以做企业网站广州越秀网站制作
  • 网页设计版权怎么写厦门seo服务
  • 江苏省住房和城乡建设部网站打开浏览器的网站
  • 网站维护的协议火车头wordpress 4.6
  • 浙江网站建设情况分析学院网站建设计划
  • 购物网站建设过程视频合肥网站制作网站
  • 网站建设属于无形资产哪一类公司注册网站的费用多少
  • 天津响应式网站微信网站建设电话
  • 荆州网站制作公司wordpress地图页面如何添加图片
  • 深圳微商城网站制作海事网站开发
  • 免费制作封面网站一个外贸网站要多大的空间比较好