C#文本日志类
2016-09-26 10:20
169 查看
C#文本日志类
说明
本类适合C#项目在本地记录文本文件,日志文件已经按照年月/日/类型分文件夹存储,所以不会产生单个大文件。当然,如果项目中有记录大量日志的逻辑,那么产生单个大的日志文件也是没办法的事情。本类是单线程日志记录类,正在计划完善称为多线程并且更为规范的日志记录方式。项目地址
点我打开代码
基础类SaveTextLog.cs
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; namespace Common { public class SaveTextLog { private static string lockString = "ab3cdef1ghi5jklmno4pqrstuvw23xyz123456ds789098e7654321zyxabc;;;asd0fasdfa"; private static string path = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase; //存储在本程序目录下 /// <summary> /// 记录错误消息到文件日志 /// </summary> /// <param name="error">错误消息</param> public static void WriteErrorLog(string error) { WriteToLog(path, "Error", error); } /// <summary> /// 记录操作日志到文件日志 /// </summary> /// <param name="message">操作日志</param> public static void WriteOperateLog(string message) { WriteToLog(path, "Operate", message); } /// <summary> /// 记录系统操作 /// </summary> /// <param name="message">系统操作消息</param> public static void WriteSystemLog(string message) { WriteToLog(path, "System", message); } public static void WriteException(string message) { WriteToLog(path, "Exception", message); } private static void WriteToLog(string filePath, string fileName, string message) { if (string.IsNullOrEmpty(filePath) || filePath.Trim() == "") { filePath = System.AppDomain.CurrentDomain.BaseDirectory; } try { lock (lockString + fileName) { if (!Directory.Exists(filePath + "log\\" + DateTime.Now.Year.ToString() + "\\" + DateTime.Now.Month.ToString())) { Directory.CreateDirectory(filePath + "log\\" + DateTime.Now.Year.ToString() + "\\" + DateTime.Now.Month.ToString()); } using (StreamWriter sw = new StreamWriter(filePath + "log\\" + DateTime.Now.Year.ToString() + "\\" + DateTime.Now.Month.ToString() + "\\" + fileName + "_" + DateTime.Now.ToString("yyyy_MM_dd") + ".txt", true, System.Text.Encoding.Default)) { sw.WriteLine("[" + DateTime.Now.ToString("HH:mm:ss") + "]\r\n" + message); sw.Flush(); sw.Dispose(); } } } catch { //已经无法再次处理了 } } } }
扩展类SaveTextLogExtend.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Common { /// <summary> /// 日志扩展类 /// </summary> public class SaveTextLogExtend { /// <summary> /// 输出异常到文本文件 /// </summary> /// <param name="methodName">方法名</param> /// <param name="ex">异常</param> public static void WriteErrorLog(string methodName, Exception ex) { SaveTextLog.WriteErrorLog("{" + methodName + "}\r\n" + ex); } /// <summary> /// 输出异常到文本文件 /// </summary> /// <param name="methodName">方法名</param> /// <param name="errorDescription">异常</param> public static void WriteErrorLog(string methodName, string errorDescription) { SaveTextLog.WriteErrorLog("{" + methodName + "}\r\n" + errorDescription); } /// <summary> /// 写日志 /// </summary> /// <param name="methodName">方法名</param> /// <param name="message">日志消息</param> public static void WriteOperateLog(string methodName, string message) { SaveTextLog.WriteOperateLog("{" + methodName + "}\r\n" + message); } /// <summary> /// 写系统操作日志 /// </summary> /// <param name="methodName">方法</param> /// <param name="message">消息</param> public static void WriteSystemLog(string methodName, string message) { SaveTextLog.WriteSystemLog("{" + methodName + "}\r\n" + message); } /// <summary> /// 记录异常 /// </summary> /// <param name="ex"></param> public static void WriteException(Exception ex) { SaveTextLog.WriteException("{" + ex.TargetSite + "}\r\n" + ex); } } }
相关文章推荐
- [C#] C# 知识回顾 - 序列化
- C#多线程
- C#与Java的MD5简单验证(实例代码)
- C#中一个异步回调的实例
- C#调用C++代码遇到的问题总结
- 如果你也会C#,那不妨了解下F#(7):面向对象编程之继承、接口和泛型
- C#之重载
- c#中decimal ,double,float的区别
- C# 生成一个随机数
- CSharpGL(33)使用uniform块来优化对uniform变量的读写
- 一个猜数字的小游戏—C# 控件的动态加载和应用 多线程
- C# yield简单迭代
- C#文本日志类
- C#写入和读出文本文件
- VolumeIndexManager
- C#之数组篇
- C# 引用类型导致的只读属性失效
- NET平台和C#
- 特殊乘法(C#)
- 特殊乘法(C#)