您的位置:首页 > 编程语言 > C#

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);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: