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

C#中异常的记录——log4net

C#中异常的记录也有一个模板,就是log4net。多的就不说了直接看怎么用的吧。
1、引用log4net.dll。
2、实现log4net的方法。
 

public class LogImplement      {          private ILog logger;            public LogImplement(ILog log)          {              this.logger = log;          }            public void Debug(object message)          {              this.logger.Debug(message);          }            public void Debug(object message, Exception e)          {              this.logger.Debug(message, e);          }            public void Warming(object message)          {              this.logger.Warn(message);          }            public void Warming(object message,Exception e)          {              this.logger.Warn(message, e);          }            public void Error(object message)          {              this.logger.Error(message);          }            public void Error(object message, Exception e)          {              this.logger.Error(message, e);          }            public void Info(object message)          {              this.logger.Info(message);          }            public void Info(object message, Exception e)          {              this.logger.Info(message, e);          }      }        public class LogFactory      {          static LogFactory()          {              FileInfo configFile = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + @"Log.config");                log4net.Config.XmlConfigurator.Configure(configFile);          }            public static LogImplement GetLogger(Type type)          {              return new LogImplement(LogManager.GetLogger(type));          }            public static LogImplement GetLogger(string str)          {              return new LogImplement(LogManager.GetLogger(str));          }      }

3、配置文件

<configuration>    <configSections>      <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-2.0"/>    </configSections>    <log4net>      <root>        <appender-ref ref="ErrorLogFileAppender"/>        <appender-ref ref="WarningFileAppender"/>        <appender-ref ref="DebugLogFileAppender"/>      </root>      <!--记录warning-->      <appender name="WarningFileAppender" type="log4net.Appender.RollingFileAppender">        <file value="log\Warn.log"/>        <appendToFile value="true"/>        <maxSizeRollBackups value="10"/>        <maximumFileSize value="1MB"/>        <rollingStyle value="Size"/>        <staticLogFileName value="true"/>        <layout type="log4net.Layout.PatternLayout">          <conversionPattern value="[%date] [%-5level] [%logger] - %message%newline"/>        </layout>        <filter type="log4net.Filter.LevelRangeFilter">          <param name="LevelMin" value="WARN"/>          <param name="LevelMax" value="WARN"/>        </filter>      </appender>      <!--记录错误-->      <appender name="ErrorLogFileAppender" type="log4net.Appender.RollingFileAppender">        <file value="log\Error.log"/>        <appendToFile value="true"/>        <maxSizeRollBackups value="10"/>        <maximumFileSize value="1MB"/>        <rollingStyle value="Size"/>        <staticLogFileName value="true"/>        <layout type="log4net.Layout.PatternLayout">          <conversionPattern value="[%date] [%-5level] [%logger] - %message%newline"/>        </layout>        <filter type="log4net.Filter.LevelRangeFilter">          <param name="LevelMin" value="ERROR"/>          <param name="LevelMax" value="ERROR"/>        </filter>      </appender>      <!--记录调试日志-->      <appender name="DebugLogFileAppender" type="log4net.Appender.RollingFileAppender">        <file value="log\debug.log"/>        <param name="AppendToFile" value="true"/>        <param name="MaxSizeRollBackups" value="10"/>        <param name="MaximumFileSize" value="1MB"/>        <param name="StaticLogFileName" value="true"/>        <param name="RollingStyle" value="Size"/>        <layout type="log4net.Layout.PatternLayout">          <param name="ConversionPattern" value="[%p] [%d{MM/dd/yyyy HH:mm:ss,fff}] [%t] [%c]- %m%n"/>        </layout>        <filter type="log4net.Filter.LevelRangeFilter">          <param name="LevelMin" value="DEBUG"/>          <param name="LevelMax" value="DEBUG"/>        </filter>      </appender>      <!--调试模式,输出日志到控制台-->      <appender name="ConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">        <mapping>          <level value="ERROR"/>          <foreColor value="Red, HighIntensity"/>          <!--<backColor value="Green" />-->        </mapping>        <mapping>          <level value="DEBUG"/>          <foreColor value="Yellow, HighIntensity"/>          <backColor value="Green"/>        </mapping>        <layout type="log4net.Layout.PatternLayout">          <footer value="--------------------------------------------------------------------"/>          <param name="ConversionPattern" value="[%p] [%d{MM/dd/yyyy HH:mm:ss,fff}] [%t] [%c]- %m%n"/>        </layout>        <filter type="log4net.Filter.LevelRangeFilter">          <param name="LevelMin" value="DEBUG"/>          <param name="LevelMax" value="ERROR"/>        </filter>      </appender>    </log4net>    <startup>      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>    </startup>  </configuration>

其中, <maximumFileSize value="1MB"/>表示异常文件超过1M大小就自动新增文件;<file value="log\Warn.log"/>表示异常文件的路径;<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>表示要支持的.net版本。至于其他属性在使用中自己可以慢慢体会。
4、记录异常

 public class RecordLog      {          public static void RecordException(Exception e)          {              LogImplement log = LogFactory.GetLogger(typeof(RecordLog));                log.Error(e.Message + e.StackTrace);          }      }

5、调用

       static void Main(string[] args)          {              try              {                  string test = "123tr";                    int i = int.Parse(test);//制造一个异常              }              catch(Exception e)              {                  RecordLog.RecordException(e);              }          }

运行后,异常文件的位置如图:

记录异常:

详细工程下载:
http://download.csdn.net/detail/yysyangyangyangshan/4857624

相关文章:

  • 查看Firefox 浏览器保存站点密码的方法
  • Win8没声音的解决办法
  • 交换机的生成树技术应用实训
  • asp.net MVC 约定
  • 处理由引用计数引起的泄漏
  • javascript操作JSON
  • 五大内存分区,堆与栈的区别(转)
  • media query
  • 电脑维修常见软件工具
  • 在ArcMap中将 DEM 显示为晕渲地貌效果
  • [程序猿感悟] 风雨20年:我所积累的20条编程经验
  • virtualbox centos安装增强工具
  • 单例模式(Singleton)
  • 桌面3D----埃舍尔多面体
  • hadoop的使用
  • Flannel解读
  • isset在php5.6-和php7.0+的一些差异
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • Vue2.x学习三:事件处理生命周期钩子
  • 工作中总结前端开发流程--vue项目
  • 王永庆:技术创新改变教育未来
  • 怎样选择前端框架
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​油烟净化器电源安全,保障健康餐饮生活
  • #Z0458. 树的中心2
  • (145)光线追踪距离场柔和阴影
  • (Python第六天)文件处理
  • (pytorch进阶之路)扩散概率模型
  • (zt)最盛行的警世狂言(爆笑)
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (四)Controller接口控制器详解(三)
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (译) 函数式 JS #1:简介
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转)关于pipe()的详细解析
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .FileZilla的使用和主动模式被动模式介绍
  • .NET 5种线程安全集合
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET(C#) Internals: as a developer, .net framework in my eyes
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .net经典笔试题
  • .NET中winform传递参数至Url并获得返回值或文件
  • .NET中两种OCR方式对比
  • .sdf和.msp文件读取
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • [BeginCTF]真龙之力
  • [BT]BUUCTF刷题第9天(3.27)
  • [COGS 622] [NOIP2011] 玛雅游戏 模拟
  • [Dxperience.8.*]报表预览控件PrintControl设置
  • [E链表] lc83. 删除排序链表中的重复元素(单链表+模拟)