C#简单日志记录
博客专区 > Hank-Yu 的博客 > 博客详情
C#简单日志记录
Hank-Yu 发表于2年前
C#简单日志记录
  • 发表于 2年前
  • 阅读 37
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

摘要: 日志记录对于部署后的系统程序来说至关重要,用户在使用过程中出现问题,日志就成为开发者的第一手资料,从中可以排查哪出了问题。设想如果没有记录日志,再让用户重复一遍出问题的过程,这就不太合适,更者,用户忘了怎么操作的该如何时候。所有开发一个稍微完善点的系统,日志成了必不可少的一环。相比log4net、本站中的Logging开源工具,这篇只是一个很简单的日志记录类,在一次一个小工具开发过程中就使用的它,希望能帮助需要者,如有错误,望不怜赐教。

话不多说直接上代码,下面分别是Logger类和简单的winform演示代码:

Logger类:

    public class Logger
    {
        private static string _errorLog;//错误日志路径
        private static string _succLog;//正确日志路径
        private static readonly object Locker = new object();//线程锁
        
        /// <summary>
        /// 创建日志文件
        /// </summary>
        /// <param name="str">日志文件类型:dr=导入,fb=发布不同的功能可以写入不同的日志文件中</param>
        public static void CreateLog(string str)
        {
            var errorpath = Application.StartupPath + "\\log\\errorlog";//错误日志文件夹路径
            var succpath = Application.StartupPath + "\\log\\succlog";//成功日志文件夹路径
            if (!Directory.Exists(errorpath))
            {
                Directory.CreateDirectory(errorpath);//创建错误日志文件夹
            }
            if (!Directory.Exists(succpath))
            {
                Directory.CreateDirectory(succpath);//创建正确日志文件夹
            }
            //程序启动创建一个单独的日子文件[*.log],方便查找
            _errorLog = errorpath + "\\" + str + DateTime.Now.ToString("yyyyMMddHHmmss") + ".log";
            _succLog = succpath + "\\" + str + DateTime.Now.ToString("yyyyMMddHHmmss") + ".log";
        }
        
        /// <summary>
        /// 写日志信息
        /// </summary>
        /// <param name="flag">true=正确日志,false=错误日志</param>
        /// <param name="message">日志信息</param>
        public static void WriteLogInfo(bool flag, string message)
        {
            lock (Locker) //为了线程安全,加入线程锁
            {
                if (flag)//正确日志
                {
                    using (var sw = new StreamWriter(_succLog, true, Encoding.Default))
                    {
                        if (message != "")
                        {
                            sw.WriteLine(DateTime.Now.ToLocalTime() + " : " + message);//每次写一行
                        }
                    }
                }
                else//错误日志
                {
                    using (var sw = new StreamWriter(_errorLog, true, Encoding.Default))
                    {
                        if (message != "")
                        {
                            sw.WriteLine(DateTime.Now.ToLocalTime() + " : " + message);//每次写一行
                        }
                    }
                }
            }
        }
    }

winform演示程序:

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            Logger.CreateLog("ce");
        }
        /// <summary>
        /// 测试按钮事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btStartTest_Click(object sender, EventArgs e)
        {
            var result = GetNumber(3);
            if (result == -1)
            {
                MessageBox.Show("索引越界!");
                Logger.WriteLogInfo(false, "索引越界!");
            }
            else
            {
                MessageBox.Show("数组的第4个值为:" + result);
                Logger.WriteLogInfo(true, "索引越界!");
            }
        }
        /// <summary>
        /// 取数组值函数
        /// </summary>
        /// <param name="index">索引值</param>
        /// <returns>返回值:-1=索引异常</returns>
        static int GetNumber(int index)
        {
            int[] nums = { 300, 600, 900 };
            try
            {
                if (index >= nums.Length)
                {
                    throw new IndexOutOfRangeException();
                }
                return nums[index];
            }
            catch (Exception)
            {
                return -1;
            }
        }
    }

运行结果:

这里的Logger可以根据自己的业务需要变更一下,我实际使用的时候也稍微有点不同。

 

标签: C#日志
共有 人打赏支持
粉丝 0
博文 1
码字总数 649
×
Hank-Yu
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: