实习到现在已经接近三个月了,由于是校企联合培养计划,所以没有工资,所幸公司对于我们这些实习生并没有什么要求,刚开始我还觉得要做点什么才能学得快,可是到了后来,发现公司安排给我们的任务并不紧要,也不算太难。

到现在大约接触了2,3个模块的设计和实现了,起初,在文件读写和记录日志方面屡屡收到了批评,因外在大学的时候并没有记录日子的习惯,使得这个时候匆匆忙忙要养成在关键位置记录日志的习惯变得有些困难,

起初我是使用了postsharp的第三方插件来记录自己的运行日志的,可是后来发现在代码移植方面,如果其他电脑没有安装postsharp会使得移植过程变得复杂,特别是在部署的时候增加复杂度。

现在在进行新的模块的时候决定不再使用postsharp了,打算自己写一个简单的记录日志的类,来记录在关键位置的操作。

【改进版】

http://www.cnblogs.com/Bobdong/p/5032690.html

不废话,直接出代码,代码比较简单,实现的功能也非常简单。

可以直接复制粘贴来使用,同时,我也提供了源码给像我一样的初学者下载。

  1. using System;
  2. using System.IO;
  3.  
  4. namespace CustomerLog
  5. {
  6.  
  7. /// <summary>
  8. /// 保存日志
  9. /// </summary>
  10. public class Logging
  11. {
  12. #region 日志分类
  13. /// <summary>
  14. /// 保存普通日志
  15. /// </summary>
  16. /// <param name="message"></param>
  17. public static void Writelog(string message)
  18. {
  19. string logContent = string.Format("[{0}] =>{1}", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), message);
  20. SetFile(@"Log.txt", logContent);
  21. }
  22.  
  23. /// <summary>
  24. /// 保存关键日志
  25. /// </summary>
  26. /// <param name="message"></param>
  27. public static void WriteKeylog(string message)
  28. {
  29. var logContent = string.Format("[{0}]=>{1}", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), message);
  30. SetFile(@"KeyLog.txt", logContent);
  31. }
  32.  
  33. /// <summary>
  34. /// 保存错误信息日志
  35. /// </summary>
  36. /// <param name="ex"></param>
  37. public static void WriteBuglog(Exception ex)
  38. {
  39. var logContent = string.Format("[{0}]错误发生在:{1},\r\n 内容:{2}",
  40. DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), ex.Source, ex.Message);
  41. logContent += string.Format("\r\n [{0}] 跟踪:{1}", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"),
  42. ex.StackTrace);
  43. SetFile(@"BugLog.txt", logContent);
  44. }
  45. #endregion
  46.  
  47. #region 通用操作
  48. /// <summary>
  49. /// 标准化写入过程,继承之后可自定义写入内容
  50. /// 默认保存在debug目录的Log目录下
  51. /// </summary>
  52. /// <param name="filename">文件名</param>
  53. /// <param name="logContent">写入内容</param>
  54. protected static void SetFile(string filename, string logContent)
  55. {
  56. Isexist(); // 判断Log目录是否存在
  57. string errLogFilePath = Environment.CurrentDirectory + @"\Log\" + filename.Trim();
  58. StreamWriter sw;
  59. if (!File.Exists(errLogFilePath))
  60. {
  61. FileStream fs1 = new FileStream(errLogFilePath, FileMode.Create, FileAccess.Write);
  62. sw = new StreamWriter(fs1);
  63. }
  64. else
  65. {
  66. sw = new StreamWriter(errLogFilePath, true);
  67. }
  68. sw.WriteLine(logContent);
  69. sw.Flush();
  70. sw.Close();
  71. }
  72.  
  73. // 判断是否存在日志文件
  74. private static void Isexist()
  75. {
  76. string path = Environment.CurrentDirectory + @"\Log\";
  77. if (!File.Exists(path))
  78. {
  79. Directory.CreateDirectory(path);
  80. }
  81. }
  82. #endregion
  83. }
  84. }

↓↓↓↓↓下载地址↓↓↓↓↓【目前只会用百度云盘分享,求大神教授更加好用的分享方式】

http://pan.baidu.com/s/1kTNcfdH

.net 创建属于自己的log类的更多相关文章

  1. VC++ 一个简单的Log类

    在软件开发中,为程序建立Log日志是很必要的,它可以记录程序运行的状态以及出错信息,方便维护和调试. 下面实现了一个简单的Log类,使用非常简单,仅供参考. // CLogHelper.h : hea ...

  2. python+selenium之自定义封装一个简单的Log类

    python+selenium之自定义封装一个简单的Log类 一. 问题分析: 我们需要封装一个简单的日志类,主要有以下内容: 1. 生成的日志文件格式是 年月日时分秒.log 2. 生成的xxx.l ...

  3. delphi 创建DBASE和FOXPRO两类DBF数据文件的差异

    delphi 创建DBASE和FOXPRO两类DBF数据文件的差异,主要有几点: 1.创建方法不同 DBASE的创建方法: Self.Table1.Close; Self.Table1.Active ...

  4. 于快速创建 IEqualityComparer<T> 实例的类 Equality<T>

    于快速创建 IEqualityComparer<T> 实例的类 Equality<T> 原文中的 Equality<T> 实现如下: 1 2 3 4 5 6 7 8 ...

  5. android中Log类的封装

    1.为了方便的使用Log打印日志,以及后续方便撤销日志打印,所以对Log类进行封装是一件好事. package market.phone; import android.util.Log; /** * ...

  6. Timber(对Log类封装的一个工具)

    Timber(对Log类封装的一个工具) https://blog.csdn.net/hzl9966/article/details/51314137 https://www.jianshu.com/ ...

  7. Java中带包(创建及引用)的类的编译

    Java中带包(创建及引用)的类的编译与调试 java源程序的编译大家都知道,也就是cmd中到源文件所在目录下javac **.java即可,当程序中有包声明还能简简单单的直接javac **.jav ...

  8. WPF 之 创建继承自Window 基类的自定义窗口基类

    开发项目时,按照美工的设计其外边框(包括最大化,最小化,关闭等按钮)自然不同于 Window 自身的,但窗口的外边框及窗口移动.最小化等标题栏操作基本都是一样的.所以通过查看资料,可按如下方法创建继承 ...

  9. php log类

    个人抽离出来一个超级简易但是实用的代码段 public static function WriteLog($msg,$module = null,$logLevel = "DEBUG&quo ...

随机推荐

  1. Spring Auto-Wiring Beans

    In Spring framework, you can wire beans automatically with auto-wiring feature. To enable it, just d ...

  2. 在没备份undo的情况下,undo丢失,重启数据库报ORA-01157错误

    今天做了一下undo隐藏参数的实验 在没有备份的情况下,删除正在使用的undo,然后关机 (本次使用的的oracle的隐藏参数,慎用!!!!!!!!!!!!!!) idle> select * ...

  3. POJ 3694 Network (tarjan + LCA)

    题目链接:http://poj.org/problem?id=3694 题意是给你一个无向图n个点,m条边,将m条边连接起来之后形成一个图,有Q个询问,问将u和v连接起来后图中还有多少个桥. 首先用t ...

  4. 三星手机 Samsung Galaxy S3 无法复制粘贴的不完美解决方法

    问题简单描述 从上周开始我的Samsung Galaxy S3手机就无法实现复制粘贴功能了,每次复制时都提示复制到了剪贴板,但是粘贴时就会发现根本粘贴不了,无法打开剪贴板.真的是莫明其妙啊,我的手机没 ...

  5. 利用WPF创建含多种交互特性的无边框窗体

    咳咳,标题一口气读下来确实有点累,让我先解释一下.另外文章底部有演示程序的下载. 本文介绍利用WPF创建一个含有以下特性的窗口: 有窗口阴影,比如QQ窗口外围只有几像素的阴影: 支持透明且无边框,为了 ...

  6. linux的shell脚本入门

    Linux shell脚本入门教程 为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活 的工具.Shell不仅仅是命令的收集,而且是一门非常 ...

  7. [置顶] Jquery中DOM操作(详细)

    Jquery中的DOM操作 为了能全面的讲解DOM操作,首先需要构建一个网页. HTML代码: <%@ page language="java" import="j ...

  8. 修改mysql字符编码出现Job failed to start解决办法

        从网上找到如下资料: $sudo gedit /etc/mysql/my.cnf [client]下添加: default-character-set=utf8 [mysqld]下添加: de ...

  9. 项目经验之:MVVM初学者图形化笔记整理。。。

    这个模式,一下子把我的思路给打开..让我眼前一亮..居然可以这样将界面分离得如此彻底........... 大家一起学习... 说说我的感受吧,一个小实例讲述了 MVVM实现原理: 一个简单的例,将两 ...

  10. Eclipse10大快捷键组合

    一个Eclipse骨灰级开发者总结了他认为最有用但又不太为人所知的快捷键组合.通过这些组合可以更加容易的浏览源代码,使得整体的开发效率和质量得到提升. Ctrl+Shift+C 快速单行注释 也适用于 ...