C#文本日志类

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);
        }
    }
}

转载于:https://my.oschina.net/dongri/blog/751541

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值