.net 创建属于自己的log类
实习到现在已经接近三个月了,由于是校企联合培养计划,所以没有工资,所幸公司对于我们这些实习生并没有什么要求,刚开始我还觉得要做点什么才能学得快,可是到了后来,发现公司安排给我们的任务并不紧要,也不算太难。
到现在大约接触了2,3个模块的设计和实现了,起初,在文件读写和记录日志方面屡屡收到了批评,因外在大学的时候并没有记录日子的习惯,使得这个时候匆匆忙忙要养成在关键位置记录日志的习惯变得有些困难,
起初我是使用了postsharp的第三方插件来记录自己的运行日志的,可是后来发现在代码移植方面,如果其他电脑没有安装postsharp会使得移植过程变得复杂,特别是在部署的时候增加复杂度。
现在在进行新的模块的时候决定不再使用postsharp了,打算自己写一个简单的记录日志的类,来记录在关键位置的操作。
【改进版】
http://www.cnblogs.com/Bobdong/p/5032690.html
不废话,直接出代码,代码比较简单,实现的功能也非常简单。
可以直接复制粘贴来使用,同时,我也提供了源码给像我一样的初学者下载。
using System;
using System.IO; namespace CustomerLog
{ /// <summary>
/// 保存日志
/// </summary>
public class Logging
{
#region 日志分类
/// <summary>
/// 保存普通日志
/// </summary>
/// <param name="message"></param>
public static void Writelog(string message)
{
string logContent = string.Format("[{0}] =>{1}", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), message);
SetFile(@"Log.txt", logContent);
} /// <summary>
/// 保存关键日志
/// </summary>
/// <param name="message"></param>
public static void WriteKeylog(string message)
{
var logContent = string.Format("[{0}]=>{1}", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), message);
SetFile(@"KeyLog.txt", logContent);
} /// <summary>
/// 保存错误信息日志
/// </summary>
/// <param name="ex"></param>
public static void WriteBuglog(Exception ex)
{
var logContent = string.Format("[{0}]错误发生在:{1},\r\n 内容:{2}",
DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"), ex.Source, ex.Message);
logContent += string.Format("\r\n [{0}] 跟踪:{1}", DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"),
ex.StackTrace);
SetFile(@"BugLog.txt", logContent);
}
#endregion #region 通用操作
/// <summary>
/// 标准化写入过程,继承之后可自定义写入内容
/// 默认保存在debug目录的Log目录下
/// </summary>
/// <param name="filename">文件名</param>
/// <param name="logContent">写入内容</param>
protected static void SetFile(string filename, string logContent)
{
Isexist(); // 判断Log目录是否存在
string errLogFilePath = Environment.CurrentDirectory + @"\Log\" + filename.Trim();
StreamWriter sw;
if (!File.Exists(errLogFilePath))
{
FileStream fs1 = new FileStream(errLogFilePath, FileMode.Create, FileAccess.Write);
sw = new StreamWriter(fs1);
}
else
{
sw = new StreamWriter(errLogFilePath, true);
}
sw.WriteLine(logContent);
sw.Flush();
sw.Close();
} // 判断是否存在日志文件
private static void Isexist()
{
string path = Environment.CurrentDirectory + @"\Log\";
if (!File.Exists(path))
{
Directory.CreateDirectory(path);
}
}
#endregion
}
}
↓↓↓↓↓下载地址↓↓↓↓↓【目前只会用百度云盘分享,求大神教授更加好用的分享方式】
http://pan.baidu.com/s/1kTNcfdH
.net 创建属于自己的log类的更多相关文章
- VC++ 一个简单的Log类
在软件开发中,为程序建立Log日志是很必要的,它可以记录程序运行的状态以及出错信息,方便维护和调试. 下面实现了一个简单的Log类,使用非常简单,仅供参考. // CLogHelper.h : hea ...
- python+selenium之自定义封装一个简单的Log类
python+selenium之自定义封装一个简单的Log类 一. 问题分析: 我们需要封装一个简单的日志类,主要有以下内容: 1. 生成的日志文件格式是 年月日时分秒.log 2. 生成的xxx.l ...
- delphi 创建DBASE和FOXPRO两类DBF数据文件的差异
delphi 创建DBASE和FOXPRO两类DBF数据文件的差异,主要有几点: 1.创建方法不同 DBASE的创建方法: Self.Table1.Close; Self.Table1.Active ...
- 于快速创建 IEqualityComparer<T> 实例的类 Equality<T>
于快速创建 IEqualityComparer<T> 实例的类 Equality<T> 原文中的 Equality<T> 实现如下: 1 2 3 4 5 6 7 8 ...
- android中Log类的封装
1.为了方便的使用Log打印日志,以及后续方便撤销日志打印,所以对Log类进行封装是一件好事. package market.phone; import android.util.Log; /** * ...
- Timber(对Log类封装的一个工具)
Timber(对Log类封装的一个工具) https://blog.csdn.net/hzl9966/article/details/51314137 https://www.jianshu.com/ ...
- Java中带包(创建及引用)的类的编译
Java中带包(创建及引用)的类的编译与调试 java源程序的编译大家都知道,也就是cmd中到源文件所在目录下javac **.java即可,当程序中有包声明还能简简单单的直接javac **.jav ...
- WPF 之 创建继承自Window 基类的自定义窗口基类
开发项目时,按照美工的设计其外边框(包括最大化,最小化,关闭等按钮)自然不同于 Window 自身的,但窗口的外边框及窗口移动.最小化等标题栏操作基本都是一样的.所以通过查看资料,可按如下方法创建继承 ...
- php log类
个人抽离出来一个超级简易但是实用的代码段 public static function WriteLog($msg,$module = null,$logLevel = "DEBUG&quo ...
随机推荐
- 关于C# XML序列化的一个BUG的修改
关于C# XML序列化的一个BUG的修改 在我前一篇博客中提到用XML序列化作为数据库的一个方案,@拿笔小心 提到他们在用XML序列化时,遇到了一个比较严重的bug,即XML不闭合,系统不能正确的加载 ...
- 玩转轻巧型C/C++ IDE之C-Free(配置GCC、Visual C++、Borland C++编译器)
玩转轻巧型C/C++ IDE之C-Free(配置GCC.Visual C++.Borland C++编译器) 之前在写一点简单的C/C++代码时习惯了VC++6.0,但是由于在windows7下VC6 ...
- JQuery学习使用笔记 -- JQuery插件开发
内容转载自 http://www.css88.com/archives/4821 扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间.这篇文章将概述jQuery插件开发的基本知识,最 ...
- UVa 11111 Generalized Matrioshkas
嵌套玩具, 要求外层玩具的尺寸比内层玩具尺寸的和要大. 每一个玩具由一个负数与相应的正数表示, 在这两数之间的部分即为此玩具内部的玩具. 要求判断一串输出的数字是否能组成一个合法的玩具. 一个合法的玩 ...
- 安装Loopback网卡/回环网卡
$CurrentPath = $MyInvocation.MyCommand.Path.substring(0,$MyInvocation.MyCommand.Path.LastIndexOf('\' ...
- 【转】makefile语法规则
1.源程序的编译 在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器. 下面我们以一个实例来说明如何使用gcc编译器. 假设我们有下面一个非常简单的 ...
- python的一些总结3
好吧 刚刚的2篇文章都很水.. 这篇 也是继续水 在 templates 右键新建 html 文件:如 index.html (输入以下代码) <!DOCTYPE html> <ht ...
- 下载discuz 6 论坛的附件
前段时间我下了个python脚本把emsky的附件全部下载了,之前是因为偶然发现emsky附件不登陆也能访问,直接访问一个url就行了. 后来发现大部分discuz6的论坛都有这个bug,我想是因为d ...
- Codeforces Round #332 (Div. 2) C. Day at the Beach 线段树
C. Day at the Beach Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/599/p ...
- GLSL实现Fresnel And Chromatic aberration 【转】
http://blog.csdn.net/a3070173/archive/2008/11/13/3290091.aspx 使用Shader实现菲涅尔和颜色色散效果很简单,在Cg教程和OpenGL S ...