.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 ...
随机推荐
- jQuery基础学习3——jQuery库冲突
默认情况下,jQuery用$作为自身的快捷方式. jQuery库在其他库之后导入 在其他库和jQuery库都被加载完毕后,可以在任何时候调用jQuery.noConflict()函数来将变量$的控制权 ...
- CodeForces 706A Beru-taxi (数学计算,水题)
题意:给定一个固定位置,和 n 个点及移动速度,问你这些点最快到固定点的时间. 析:一个一个的算距离,然后算时间. 代码如下: #pragma comment(linker, "/STACK ...
- hibernate和mybatis
本来是个菜鸟程序员,现在大学还没毕业. 最近一直在想一个问题,到底是hibernate好还是mybatis好.我总觉得 hibernate好用之极,在大学里做过的小项目都是用的hibernate,只要 ...
- CSS构造表格
表格的基础构造 边距和边线应用 隐藏和删除应用 简单表格 table { width:auto; border-collapse:collapse;(把单元格空隙合并起来) m ...
- Unity3D之游戏暂停制作方法记录
在游戏开发中我们一般都需要涉及到一个功能:游戏暂停,但是这里指的暂停仅仅是核心模块的暂停,并不是整个游戏都暂停,比如一些UI和UI上的动画与特效是不能被暂停的,整个游戏都暂停了玩家该如何继续游戏呢. ...
- HibernateDaoSupport的使用
1.HibernateDaoSupport是有spring提供的一个hibernate模版工具类,或不多说,直接上代码 接口 IGenericDao.java package org.hibernat ...
- twisted 安装时,安装顺序为 zope.interface ->twisted
最近想学 twisted ,就去下载 twisted 的windows版本,并且 安装.运行 twisted 例子后,发现出现了问题: ImportError: Twisted requires zo ...
- Cocos2d-x——Cocos2d-x 屏幕适配新解 – 兼容与扩展【转载】
Cocos2d-x 屏幕适配新解 – 兼容与扩展 本文出自[无间落叶](转载请保留出处):http://blog.leafsoar.com/archives/2013/05-13-08.html 在读 ...
- spring中的ResourceBundleMessageSource
1 首先创建两个资源文件 messages_en_US.properties customer.name=Yong Mook Kim, age : {0}, URL : {1} messages ...
- oracle 基本语句练习(一) where, between ,null, like,转义字符,order by
1 where 筛选关键字; select * from emp where job >'CLERK' 从emp表中列出 job值大于'CLERK'的项 (由于比较的是字符串,所以加单引号 ...