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

罗湖商城网站建设找哪家公司好福建网站优化

罗湖商城网站建设找哪家公司好,福建网站优化,网站开发保密协议模板,平台型网站建设一、日志记录#xff1a; 1、日志的作用#xff1a; 程序中记录日志一般有两个目的#xff0c;故障定位和显示程序运行状态。好的日志记录方式可以提供足够多定位问题的依据。 2、日志的等级#xff1a; 有良好工作习惯的人#xff0c;工作的时候会将领导交待下来的工作分… 一、日志记录      1、日志的作用            程序中记录日志一般有两个目的故障定位和显示程序运行状态。好的日志记录方式可以提供足够多定位问题的依据。         2、日志的等级                         有良好工作习惯的人工作的时候会将领导交待下来的工作分为紧急重要、重要不紧急、紧急不重要、不紧急不重要等同样 ASP.NET Core 定义了以下日志级别按严重性从低到高排列。             每次写入日志时都需指定其 LogLevel。 日志级别指示严重性或重要程度。 例如如果方法正常结束则写入 Information 日志如果方法返回 404 返回代码则写入 Warning 日志如果捕获未知异常则写入 Error 日志。 可以使用日志级别控制写入到特定存储介质或显示窗口的日志输出量。 例如在生产中可将所有 Information 及以下级别的日志放在卷数据存储将所有 Warning 及以上级别的日志放在值数据存储。 在开发期间通常要将严重性为 Warning 或以上级别的日志发送到控制台。 需要进行故障排除时可添加 Debug 级别。 Trace 0           表示仅对于开发人员调试问题有价值的信息。 这些消息可能包含敏感应用程序数据因此不得在生产环境中启用它们。 默认情况下禁用。 示例Credentials: {User:someuser, Password:Pssword} Debug 1           表示在开发和调试过程中短期有用的信息。 示例Entering method Configure with flag set to true.。除非要排查问题否则通常不会在生产中启用 Debug 级别日志因为日志数量过多。 Information 2           用于跟踪应用程序的常规流。 这些日志通常有长期价值。 示例Request received for path /api/todo Warning 3           表示应用程序流中的异常或意外事件。 可能包括不会中断应用程序运行但仍需调查的错误或其他条件。 Warning 日志级别常用于已处理的异常。 示例FileNotFoundException for file quotes.txt. Error 4           表示无法处理的错误和异常。 这些消息指示的是当前活动或操作如当前 HTTP 请求中的失败而不是应用程序范围的失败。日志消息示例Cannot insert record due to duplicate key violation. Critical 5           需要立即关注的失败。 例如数据丢失、磁盘空间不足。 二、使用内置的Logger 微软官方文档https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging/?viewaspnetcore-2.1 因为Logger是asp.net core 的内置service所以我们就不需要在ConfigureService里面注册了。如果是asp.net core 1.0版本的话我们需要配置一个或者多个Logger但是asp.net core 2.0的话就不需要做这个工作了因为在CreateDefaultBuilder方法里默认给配置了输出到Console和Debug窗口的Logger。这是源码 public static IWebHostBuilder CreateDefaultBuilder(string[] args){var builder new WebHostBuilder().UseKestrel().UseContentRoot(Directory.GetCurrentDirectory()).ConfigureAppConfiguration((hostingContext, config) {var env hostingContext.HostingEnvironment;config.AddJsonFile(appsettings.json, optional: true, reloadOnChange: true).AddJsonFile($appsettings.{env.EnvironmentName}.json, optional: true, reloadOnChange: true);if (env.IsDevelopment()){var appAssembly Assembly.Load(new AssemblyName(env.ApplicationName));if (appAssembly ! null){config.AddUserSecrets(appAssembly, optional: true);}}config.AddEnvironmentVariables();if (args ! null){config.AddCommandLine(args);}}).ConfigureLogging((hostingContext, logging) {logging.AddConfiguration(hostingContext.Configuration.GetSection(Logging));logging.AddConsole();logging.AddDebug();}).UseIISIntegration().UseDefaultServiceProvider((context, options) {options.ValidateScopes context.HostingEnvironment.IsDevelopment();});if (args ! null){builder.UseConfiguration(new ConfigurationBuilder().AddCommandLine(args).Build());}return builder;} View Code 注入Logger     我们可以在ProductController里面注入ILoggerFactory然后再创建具体的Logger。但是还有更好的方式Container可以直接提供一个ILoggerT的实例这时候呢Logger就会使用T的名字作为日志的类别 namespace CoreBackend.Api.Controllers {[Route(api/[controller])]public class ProductController : Controller{private ILoggerProductController _logger;public ProductController(ILoggerProductController logger){_logger logger;} ...... 如果通过Constructor注入的方式不可用那么我们也可以直接从Container请求来得到它HttpContext.RequestServices.GetService(typeof(ILoggerProductController)); 如果你在Constructor写这句话可能会空指针因为这个时候HttpContext应该是null吧。 不过还是建议使用Constructor注入的方式 然后我们记录一些日志吧 [Route({id}, Name GetProduct)]public IActionResult GetProduct(int id){var product ProductService.Current.Products.SingleOrDefault(x x.Id id);if (product null){_logger.LogInformation($Id为{id}的产品没有被找到..);return NotFound();}return Ok(product);} Log记录时一般都分几个等级这点我假设大家都知道吧就不介绍了。 然后试一下通过Postman访问一个不存在的产品‘/api/product/22’然后看看Debug输出窗口 嗯出现了前边是分类也就是ILoggerT里面T的名字然后是级别 Information然后就是我们记录的Log内容。 再Log一个Exception [Route({id}, Name GetProduct)] public IActionResult GetProduct(int id) {try{throw new Exception(来个异常);var product ProductService.Current.Products.SingleOrDefault(x x.Id id);if (product null){_logger.LogInformation($Id为{id}的产品没有被找到..);return NotFound();}return Ok(product);}catch (Exception ex){_logger.LogCritical($查找Id为{id}的产品时出现了错误!!, ex);return StatusCode(500, 处理请求的时候发生了错误);} } 记录Exception就建议使用LogCritical了这里需要注意的是Exception的发生就表示服务器发生了错误我们应该处理这个exception并返回500。使用StatusCode这个方法返回特定的StatusCode然后可以加一个参数来解释这个错误这里一般不建议返回exception的细节。 运行试试 OK。 Log到Debug窗口或者Console窗口还是比较方便的但是正式生产环境中这肯定不够用。 正式环境应该Log到文件或者数据库。虽然asp.net core 的log内置了记录到Windows Event的方法但是由于Windows Event是windows系统独有的所以这个方法无法跨平台也就不建议使用了。 官方文档上列出了这几个建议使用的第三发Log Provider 把这几个Log provider注册到asp.net core的方式几乎是一摸一样的所以介绍一个就行。我们就用比较火的NLog吧。     三、NLog 官方文档https://github.com/NLog/NLog.Web/wiki/Getting-started-with-ASP.NET-Core-2 首先通过nuget安装Nlog:  注意要勾上include prerelease目前还不是正式版。 装完之后我们就需要为Nlog添加配置文件了。默认情况下Nlog会在根目录寻找一个叫做nlog.config的文件作为配置文件。那么我们就手动改添加一个nlog.config: ?xml version1.0 encodingutf-8 ? nlog xmlnshttp://www.nlog-project.org/schemas/NLog.xsdxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancetargetstarget namelogfile xsi:typeFile fileNamelogs/${shortdate}.log //targetsruleslogger name* minlevelInfo writeTologfile //rules /nlog 然后设置该文件的属性如下 对于Nlog的配置就不进行深入介绍了。具体请看官方文档的.net core那部分。 然后需要把Nlog集成到asp.net core也就是把Nlog注册到ILoggerFactory里面。所以打开Startup.cs首先注入ILoggerFactory然后对ILoggerFactory进行配置为其注册NLog的Provider public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory){// loggerFactory.AddProvider(new NLogLoggerProvider());loggerFactory.AddNLog();if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}else{app.UseExceptionHandler();}app.UseStatusCodePages();app.UseMvc();} 针对LoggerFactory.AddProvider()这种写法Nlog一个简单的ExtensionMethod做了这个工作就是AddNlog(); 添加完NLog其余的代码都不需要改然后我们试下 在如图所示的位置出现了log文件。内容如下   四、Serilog            官方文档    Asp.net core  https://github.com/serilog/serilog-aspnetcore                                       Sinks-file: https://github.com/serilog/serilog-sinks-file                                     Sinks-Consolehttps://github.com/serilog/serilog-sinks-console           1 添加Serilog                                  参考资料            https://www.cnblogs.com/cgzl/p/7652413.html            https://v.qq.com/x/page/m0762gzo2l6.html            https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging/?viewaspnetcore-2.1             转载于:https://www.cnblogs.com/fuyouchen/p/9584084.html
http://www.zqtcl.cn/news/673685/

相关文章:

  • 佛山 做网站邮箱官方网站注册
  • 生成flash的网站源码表白二维码制作网站
  • 定做专业营销型网站网站开发应用
  • 万盛建设局官方网站如何用群晖nas做网站
  • 建设装饰网站郑州惠济区建设局网站
  • 网站做标题有用吗网站优化多少钱
  • 婚庆设备租赁网站源码如何进行网站的建设和维护
  • 青岛做网站公wordpress文章付费阅读
  • 小灯具网站建设方案360优化大师
  • 开发公司与物业公司前期合同网站优化的推广
  • 汉堡云虚拟主机aso安卓优化公司
  • 医院 网站建设 新闻营销外包
  • 优秀网站网址郑州无痛人流哪家医院好
  • 备案网站能打开吗大良营销网站建设流程
  • 哪些网站可以做淘宝店招石油网站编辑怎么做
  • 网站出现建设中集团网站建设特点
  • asp网站开发 pdf企业展厅设计公司盛世笔特
  • 怎么创建网站 免费的免费开源的网站系统
  • 中山精品网站建设资讯网页设计师就业趋势
  • 网站建设哪家好 万维科技wordpress广告公司模板
  • 如何选择建网站公司网站页面html静态化
  • 建设银行网站入口网页设计培训 周末双休
  • 做企业网站建设的公司为什么企业网站不是开源系统
  • 网站客户端怎么做的做汽车脚垫版的网站
  • 做数学题挣钱的网站广西建筑特种作业证件查询官网
  • 汉字叔叔花了多少钱做网站免费原创视频素材
  • 网站开发提现功能互联网推广工作好做吗
  • 做阿里渠道的销售要有哪些网站网站评论怎么做的
  • 建设中网站如何上传图片深圳营销型网站建设设计公司
  • 建设电商网站需要多少钱家具网页设计素材