今天看了一篇文章,说的是使用微软自带的日志类写日志,然后晚上我就花了2个多小时自己动手试了一下,然后模仿者自己封装了一个类库。

  下面是自己封转的类:

  1. /*****
  2. * 创建人:金河
  3. * 创建日期:2014-4-2 22:43
  4. * 内容:日志类
  5. */
  6.  
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Text;
  10. using System.Diagnostics;
  11. using System.IO;
  12.  
  13. namespace Log
  14. {
  15. /// <summary>
  16. /// 继承TraceListener
  17. /// (1)必须要重写的方法void Write(string message);void WriteLine(string message);
  18. /// (2)子类方法重写必须和父类方法返回值、参数列表完全相同
  19. /// </summary>
  20. public class Log : TraceListener
  21. {
  22.  
  23. private string m_fileName; // 文件名
  24. private string m_filePath; // 文件路径
  25.  
  26. public string FileFullPath
  27. {
  28. get
  29. {
  30. if (Directory.Exists(m_filePath) == false)
  31. {
  32. Directory.CreateDirectory(m_filePath);
  33. }
  34. return m_filePath.TrimEnd('/') + "/" + m_fileName;
  35. }
  36.  
  37. }
  38.  
  39. public Log()
  40. {
  41. m_fileName = DateTime.Now.ToString("yyyy-MM-dd") + ".txt"; // 默认文件名为 今天的日期
  42. m_filePath = AppDomain.CurrentDomain.BaseDirectory + "/log"; // 默认路径在当前域log文件夹下面
  43. }
  44. public Log(string sFileName)
  45. {
  46. m_fileName = sFileName;
  47. m_filePath = AppDomain.CurrentDomain.BaseDirectory + "/log"; //默认路径在当前域log文件夹下面
  48. }
  49.  
  50. public override void Write(string message)
  51. {
  52. WriteLine(message);
  53. }
  54.  
  55. public override void WriteLine(string message)
  56. {
  57. WriteLine(null, message);
  58. }
  59.  
  60. /// <summary>
  61. /// 将异常或信息写入日志
  62. /// </summary>
  63. /// <param name="exception"></param>
  64. /// <param name="message"></param>
  65. public override void WriteLine(object exception, string message)
  66. {
  67. string sMsg = Environment.NewLine + DateTime.Now.ToString() + Environment.NewLine;
  68. if (!string.IsNullOrEmpty(message)) //如果信息不为空,加在最前面
  69. {
  70. sMsg += message;
  71. }
  72. if (exception is Exception)
  73. {
  74. Exception ex = (Exception)exception;
  75. sMsg += ex.Message + Environment.NewLine; // 错误提示
  76. sMsg += ex.StackTrace; // 堆栈信息
  77. }
  78. else if (exception != null)
  79. {
  80. sMsg += exception.ToString();
  81. }
  82.  
  83. File.AppendAllText(FileFullPath, sMsg);
  84. }
  85.  
  86. }
  87. }

下面是文档地址:

利用C#自带组件强壮程序日志

C#向文本文件中写入日志的更多相关文章

  1. java往文本文件中写入信息并修改

    题目要求: 1.可以往一个文本文档中写入员工信息:name,id和详情 2.可以更改name package FanCQ.Xue.practice; import java.io.*;import j ...

  2. Mysql中错误日志、binlog日志、查询日志、慢查询日志简单介绍

    前言 数据库的日志是帮助数据库管理员,追踪分析数据库以前发生的各种事件的有力根据.mysql中提供了错误日志.binlog日志(二进制日志).查处日志.慢查询日志.在此,我力求解决下面问题:各个日志的 ...

  3. Java基础知识强化之IO流笔记51:IO流练习之 键盘录入学生信息按照总分排序写入文本文件中的案例

    1.  键盘录入学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分排序写入文本文件中 分析:   A:创建学生类   B:创建集合对象      TreeSet<Student>   ...

  4. 解决nohup中不写入日志的问题

    (一)问题描述: nohup 你的程序命令 如: nohup python manage.py runserver 0.0.0.0:6789   (此shell窗口1不要关,另外开一个shell窗口2 ...

  5. flink---实时项目--day01--1. openrestry的安装 2. 使用nginx+lua将日志数据写入指定文件中 3. 使用flume将本地磁盘中的日志数据采集到的kafka中去

    1. openrestry的安装 OpenResty = Nginx + Lua,是⼀一个增强的Nginx,可以编写lua脚本实现⾮非常灵活的逻辑 (1)安装开发库依赖 yum install -y ...

  6. .NetCore中的日志(1)日志组件解析

    .NetCore中的日志(1)日志组件解析 0x00 问题的产生 日志记录功能在开发中很常用,可以记录程序运行的细节,也可以记录用户的行为.在之前开发时我一般都是用自己写的小工具来记录日志,输出目标包 ...

  7. 【.net 深呼吸】写入日志文件

    记录日志,一方面可以把日志写入系统的日志存储中,可在“事件查看器”窗口中查看:如果不喜欢写到系统的日志文件中,也可以写到自己定义的文件中. 其实,日志文件就是文本文件,可能有朋友会想到用写入文本文件的 ...

  8. ASP.NET 日志组件Smart.LogNet.DLL 引用即可写入日志及读取日志

    借助LogNet组件,以后查看站点日志,再也不用去服务器下载了 日志组件:LogNet.DLL ,引用即可使用 写入方法: 1.LogNet.Log.WriteLog("日志标题" ...

  9. .NetCore中的日志(2)集成第三方日志工具

    .NetCore中的日志(2)集成第三方日志工具 0x00 在.NetCore的Logging组件中集成NLog 上一篇讨论了.NetCore中日志框架的结构,这一篇讨论一下.NetCore的Logg ...

随机推荐

  1. ios广告

    ios广告只需要添加iAd.framework框架 添加广告控件ADBannerView,在控制器中设置广告控件代理<ADBannerViewDelegate>即可,广告会有苹果官方自动推 ...

  2. ios内购

    1.添加框架,storeKit.framework 需要真机调试 /* 内购五步: 1.请求可销售商品的列表 2.展示课销售的商品 3.点击购买 4.开具小票 5.创建交易对象并添加到交易队列 6.创 ...

  3. pylab模式

    启动IPython时ipython --pylab就可以进入pylab模式,这种模式下画图时图片不会直接蹦出来,而是嵌在交互环境中,当然sypder里自动是pylab模式了

  4. 出来ios顶部导航掉下来问题

    <script type="text/javascript"> setposition(); function setposition(){ var ua = navi ...

  5. 【T_SQL】 基础

    一.T-SQL 的组成 1.DML(数据操作语言 Data Manipulation Language)               查询.插入.删除和修改数据库中的数据.SELECT.INSERT. ...

  6. T-SQL 高级查询

    基本常用查询 --select select * from student; --all 查询所有 select all sex from student; --distinct 过滤重复 selec ...

  7. JAVA多线程实现的四种方式

    Java多线程实现方式主要有四种:继承Thread类.实现Runnable接口.实现Callable接口通过FutureTask包装器来创建Thread线程.使用ExecutorService.Cal ...

  8. 分享Kali Linux 2016.2第48周虚拟机

    分享Kali Linux 2016.2第48周虚拟机该虚拟机使用Kali Linux 2016.2第48周的64位镜像安装而成.基本配置如下:(1)该系统默认设置单CPU双核,内存为2GB,硬盘为50 ...

  9. 深圳浩瀚技术有限公司(haohantech)推出的无线移动批发管理PDA解决方案------无线移动POS销售开单系统

    办好大型行业展会/交易会使其发挥强大的营销广告宣传作用从而为企业带来巨大的经济效益是每个参展企业的美好愿望. 由于行业内有影响力的展会每年屈指可数, 甚至很多情况下每年就只有一到两次, 如果没能够很好 ...

  10. http://blog.csdn.net/jyw935478490/article/details/51233931

    http://blog.csdn.net/jyw935478490/article/details/51233931