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

外贸网站开发营销汕头新导网络公司

外贸网站开发营销,汕头新导网络公司,wordpress 怎么安全,网站设计制作策划书一、介绍此篇文章将会介绍项目的全局异常收集以及采用log4net或者NLog记录。众所周知#xff0c;一旦自己的项目报错#xff0c;如果没有进行处理都是显示不友好的#xff0c;有得甚至直接爆出错误页面#xff0c;看的也是很奇怪。为了避免出现这样的错误以及在错误出现的时… 一、介绍 此篇文章将会介绍项目的全局异常收集以及采用log4net或者NLog记录。众所周知一旦自己的项目报错如果没有进行处理都是显示不友好的有得甚至直接爆出错误页面看的也是很奇怪。 为了避免出现这样的错误以及在错误出现的时候可以进行收集错误供维护人员进行bug修改因此需要进行全局异常的收集。 让我们开始部署吧。 此篇文章的目录1、log4net使用2、Nlog使用后期将会把NLogELK进行结合部署收集我们的asp.net core的项目。大家可以拭目以待吧。 二、部署log4net使用 1、新建一个asp.net core webapi的项目然后目前我先引入 log4net   nuget包。2、然后创建一个log4net.config文件此文件中我创建了一个是记录 错误的文件夹LogError以及是记录操作的文件夹(LogInfo)代码如下我把需要记录的文件放在了log文件夹下面。?xml version1.0 encodingutf-8?configuration  log4net    !-- 错误日志类--    logger namelogerror      level valueALL /      appender-ref refErrorAppender /    /logger    !-- 错误日志附加介质--    appender nameErrorAppender typelog4net.Appender.RollingFileAppender      !--日志文件路径--      param nameFile valueLog\\LogError\\ /      !--是否是向文件中追加日志--      param nameAppendToFile valuetrue /      !--log保留天数--      param nameMaxSizeRollBackups value1000 /      !--最大文件大小--      param nameMaxFileSize value10240 /      !--日志文件名是否是固定不变的--      param nameStaticLogFileName valuefalse /      !--日志文件名格式为:2008-08-31.log--      param nameDatePattern valueyyyy-MM-ddquot;.htmquot; /      !--日志根据日期滚动--      param nameRollingStyle valueDate /      !--信息日志布局--      layout typelog4net.Layout.PatternLayout        param nameConversionPattern valuelt;HR COLORredgt;%n【异常时间】%d [%t] lt;BRgt;%n【异常级别】%-5p lt;BRgt;%n%m lt;BRgt;%n lt;HR Size1gt;  /      /layout    /appender    !-- 信息日志类 --    logger nameloginfo      level valueALL /      appender-ref refInfoAppender /    /logger    !-- 信息日志附加介质--    appender nameInfoAppender typelog4net.Appender.RollingFileAppender      !--日志文件路径--      param nameFile valueLog\\LogInfo\\ /      !--是否是向文件中追加日志--      param nameAppendToFile valuetrue /      !--log保留天数--      param nameMaxSizeRollBackups value100 /      param nameMaxFileSize value1 /      !--日志文件名是否是固定不变的--      param nameStaticLogFileName valuefalse /      !--日志文件名格式为:2008-08-31.log--      param nameDatePattern valueyyyy-MM-ddquot;.htmquot; /      !--日志根据日期滚动--      param nameRollingStyle valueDate /      !--信息日志布局--      layout typelog4net.Layout.PatternLayout        param nameConversionPattern valuelt;HR COLORbluegt;%n日志时间%d [%t] lt;BRgt;%n日志级别%-5p lt;BRgt;%n%m lt;BRgt;%n lt;HR Size1gt;  /      /layout    /appender  /log4net  !-- To customize the asp.net core module uncomment and edit the following section.   For more info see https://go.microsoft.com/fwlink/?linkid838655 --  !--  system.webServer    handlers      remove nameaspNetCore/      add nameaspNetCore path* verb* modulesAspNetCoreModule resourceTypeUnspecified/    /handlers    aspNetCore processPath%LAUNCHER_PATH% arguments%LAUNCHER_ARGS% stdoutLogEnabledfalse stdoutLogFile.\logs\stdout /  /system.webServer  --/configuration3、在asp.net core项目中 Startup.cs 中需要添加初始化log4net的仓储名主要是用来给log4net标记一个名称这边可以随意。 4、在项目中创建一个类用来记录log的日志格式以及数据分类存放创建LogHelper.cs, 定义log格式当然自己可以随意定义哈。#region 全局异常错误记录持久化        /// summary        /// 全局异常错误记录持久化        /// /summary        /// param namethrowMsg/param        /// param nameex/param        public static void ErrorLog(string throwMsg, Exception ex)        {            string errorMsg string.Format(【抛出信息】{0} br【异常类型】{1} br【异常信息】{2} br【堆栈调用】{3}, new object[] { throwMsg,                ex.GetType().Name, ex.Message, ex.StackTrace });            errorMsg errorMsg.Replace(\r\n, br);            errorMsg errorMsg.Replace(位置, strong style\color:red\位置/strong);            logerror.Error(errorMsg);        }        #endregion#region 自定义操作记录        /// summary        /// 自定义操作记录与仓储中的增删改的日志是记录同一张表        /// /summary        /// param namethrowMsg/param        /// param nameex/param        public static void WriteLog(string throwMsg, Exception ex)        {            string errorMsg string.Format(【抛出信息】{0} br【异常类型】{1} br【异常信息】{2} br【堆栈调用】{3}, new object[] { throwMsg,                ex.GetType().Name, ex.Message, ex.StackTrace });            errorMsg errorMsg.Replace(\r\n, br);            errorMsg errorMsg.Replace(位置, strong style\color:red\位置/strong);            logerror.Error(errorMsg);        }        #endregion5、有了以上的log格式这样我就开始定义一下全局异常处理吧我这边先创建一个全局异常处理类 GlobalExceptions.cs 然后需要在startup.cs中注入在ConfigureServices 方法中注入。//注入全局异常捕获services.AddMvc(o { o.Filters.Add(typeof(GlobalExceptions)); }); 6、GlobalExceptions类中添加处理当然异常需要继承IExceptionFilter。代码如下GlobalExceptions public class GlobalExceptions : IExceptionFilter    {        private readonly IHostingEnvironment _env;        public GlobalExceptions(IHostingEnvironment env)        {            _env env;        }        public void OnException(ExceptionContext context)        {            var json new JsonErrorResponse();            //这里面是自定义的操作记录日志            if (context.Exception.GetType() typeof(UserOperationException))            {                json.Message context.Exception.Message;                if (_env.IsDevelopment())                {                    json.DevelopmentMessage context.Exception.StackTrace;//堆栈信息                }                context.Result new BadRequestObjectResult(json);//返回异常数据            }            else            {                json.Message 发生了未知内部错误;                if (_env.IsDevelopment())                {                    json.DevelopmentMessage context.Exception.StackTrace;//堆栈信息                }                context.Result new InternalServerErrorObjectResult(json);            }            //采用log4net 进行错误日志记录            LogHelper.ErrorLog(json.Message, context.Exception);        }    }    public class InternalServerErrorObjectResult : ObjectResult    {        public InternalServerErrorObjectResult(object value) : base(value)        {            StatusCode StatusCodes.Status500InternalServerError;        }    }JsonErrorResponse.cs public class JsonErrorResponse    {        /// summary        /// 生产环境的消息        /// /summary        public string Message { get; set; }        /// summary        /// 开发环境的消息        /// /summary        public string DevelopmentMessage { get; set; }    }/// summary    /// 操作日志    /// /summary    public class UserOperationException : Exception    {        public UserOperationException() { }        public UserOperationException(string message) : base(message) { }        public UserOperationException(string message, Exception innerException) : base(message, innerException) { }    }自此全局异常配置完成然后我们可以测试一下随便写一个除以0的代码在日志记录中就会出现如下的展示哇发现我的错误日志的格式非常的清楚当然这个跟我的做事态度以及性格有很大的关系的啦毕竟楼主还是很帅的。哈哈哈。 三、NLog使用 1、在项目中添加nlog的nuget包引入“NLog.Web.AspNetCore”2、创建nlog.config文件大家会发现我的log格式跟上面的格式操作而且我的分层层次也很清楚。哈哈?xml version1.0 encodingutf-8 ?nlog xmlnshttp://www.nlog-project.org/schemas/NLog.xsd      xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance      autoReloadtrue  !-- the targets to write to --  targets    !-- 输出到文件,这个文件记录所有的日志 --    target xsi:typeFile nameallfile fileNameLog\LogAll\${shortdate}.htm                layoutlt;HR COLORredgt;${longdate}lt;BRgt;${logger}lt;BRgt;${uppercase:${level}}lt;BRgt;${message} ${exception}lt;HR Size1gt; /    !-- 输出到文件,这个文件记录错误日志 --    target xsi:typeFile namelogError fileNameLog\LogError\${shortdate}.htm            layoutlt;HR COLORredgt;【异常时间】${date} lt;BRgt;【异常级别】${level:uppercasetrue} lt;BRgt;${message}lt;HR Size1gt; /    !-- 输出到文件,这个文件记录操作日志 --    target xsi:typeFile namelogInfo fileNameLog\LogInfo\${shortdate}.htm                 layoutlt;HR COLORredgt;【操作时间】${date} lt;BRgt;【操作级别】${level:uppercasetrue} lt;BRgt;${message}lt;HR Size1gt; /  /targets  !-- rules to map from logger name to target --  rules    !--All logs, including from Microsoft--    logger name* minlevelTrace writeToallfile /    logger name* minlevelError writeTologError /    logger name* minlevelInfo writeTologInfo /    logger nameMicrosoft.* maxLevelInfo finaltrue /  /rules/nlog3、在startup.cs中的  Configure方法注入//ILoggerFactory loggerFactoryloggerFactory.AddNLog(); NLog.LogManager.LoadConfiguration(nlog.config); //填入上面创建的文件的名称 4、创建NLogHelp.cs类public class NLogHelp    {        public static Logger logger LogManager.GetCurrentClassLogger();        public static void ErrorLog(string throwMsg, Exception ex)        {            string errorMsg string.Format(【异常信息】{0} br【异常类型】{1} br【堆栈调用】{2},                new object[] { throwMsg, ex.GetType().Name, ex.StackTrace });            errorMsg errorMsg.Replace(\r\n, br);            errorMsg errorMsg.Replace(位置, strong style\color:red\位置/strong);            logger.Error(errorMsg);        }        public static void InfoLog(string operateMsg)        {            string errorMsg string.Format(【操作信息】{0} br,                new object[] { operateMsg });            errorMsg errorMsg.Replace(\r\n, br);            logger.Info(errorMsg);        }    }5、在上面log4net中的GlobalExceptions类把LogHelper.ErrorLog(json.Message, context.Exception)替换成如下NLogHelp.ErrorLog(json.Message,context.Exception)即可。运行测试如下【异常时间】2018/09/03 14:41:36.786 【异常级别】ERROR 【异常信息】错误消息Failed to create instance of typeat AspectCore.Injector.ServiceCallSiteResolver.ResolvePropertyInject(ServiceDefinition service)【异常类型】InvalidOperationException 【堆栈调用】 at AspectCore.Injector.ServiceCallSiteResolver.ResolveTypeService(TypeServiceDefinition typeServiceDefinition)at AspectCore.Injector.ServiceCallSiteResolver.ResolvePropertyInject(ServiceDefinition service)at System.Collections.Concurrent.ConcurrentDictionary2.GetOrAdd(TKey key, Func2 valueFactory)at AspectCore.Injector.ServiceResolver.b自此完美搞定等后期我将会介绍采用ELKNLog进行数据采集及展示请大家拭目以待吧。原文链接https://www.cnblogs.com/guolianyu/p/9580626.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com
http://wiki.neutronadmin.com/news/449755/

相关文章:

  • 专业网站建设微信网站定制帮别人设计做关于图的网站
  • 呼伦贝尔北京网站建设layui+wordpress
  • 网站建设拍金手指谷哥14wordpress博客列表显示不出来
  • 网站平台开发报价单做家装家居网站
  • 衡水网站建设最新报价阿里云的国际网站建设
  • 做一个网站一般需要多少钱做企业网站需要用到的软件
  • 大连建网站需要多少钱自己做的网页怎么上传网站
  • 大哥商品做网站的目的织梦框架做网站简单
  • 建筑行业数据共享平台网站上海有限公司黄页
  • 无锡设计网站建设企业邮箱格式怎么写才正确
  • 怎么创建一个网站wordpress weui主题
  • 网站开发整体流程郑州网站开发公司电话
  • 网站建设的常用词建筑行业网站运营方案
  • 网站建设企业网站怎么做wordpress 捐赠插件
  • 网站是公司域名是个人可以吗手机商城网站建设策划方案范文
  • 哲林高拍仪网站开发游戏是怎么制作的
  • 商品展示的网站源码企业seo网站优化设计
  • 外国人做美食视频网站志鸿优化设计答案网
  • 手机网站个人中心源码电商网站建设方式
  • 网站建设模型软件文明校园建设专题网站
  • 如何给网站做右侧导航质量好的购物平台
  • 上海建设厅网站查询济南网站推广服务
  • 移动端网站开发项目oneindex wordpress
  • 搭建网站做财务系统只做网站的
  • 律师做推广的网站wordpress单本小说
  • 许昌市网站建设科技哪里可以检测短链脂肪酸
  • 做棋牌网站违法wordpress编辑增强
  • iis网站批量导入东营网站建设dysem
  • 网站备案 网站名称西安官网seo
  • 网站建设的目标的意思创意交互设计