• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

c#:简单的日志管理类(TextWriterTraceListener)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

以c#实现轻量级的日志管理,着实简单,置一静态类记之:

    /// <summary>
    /// 日志管理
    /// </summary>
    public static class LogHelper
    {
        //超过3M则清除
        const int MAX_LOG_SIZE = 3 * 1024 * 1024;

        public static void Init(string fileName)
        {
            CheckAndCleanLogFile(fileName);

            bool firstWrite = !File.Exists(fileName);
            var traceListener = new TimeTextWriterTraceListener(fileName);
            //TraceOptions.DateTime,在以Trace.TraceError、Trace.TraceWarning等方式输出信息时,全加入日期信息
            traceListener.TraceOutputOptions |= TraceOptions.DateTime;
            Trace.Listeners.Add(traceListener);
            Trace.AutoFlush = true;

            //初始日志
            if (firstWrite)
                Trace.WriteLine(string.Format("OS Version: {0}", Environment.OSVersion.ToString()));
            Trace.WriteLine("\r\n" + new string('-', 64));
            Trace.WriteLine(string.Format("Program Start: {0} v{1}", Application.ProductName, Application.ProductVersion));
        }

        private static void CheckAndCleanLogFile(string fileName)
        {
            if (!File.Exists(fileName))
                return;

            try
            {
                var fi = new FileInfo(fileName);
                if (fi.Length > MAX_LOG_SIZE)
                    File.Delete(fileName);
            }
            catch
            {
            }
        }

        private class TimeTextWriterTraceListener : TextWriterTraceListener
        {
            public TimeTextWriterTraceListener(string fileName)
                : base(fileName)
            {
            }

            public override void WriteLine(string message)
            {
                if (string.IsNullOrEmpty(message))
                    return;

                if ((this.TraceOutputOptions & TraceOptions.DateTime) == TraceOptions.DateTime && !message.Contains("--------"))
                    base.Write(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " ");
                base.WriteLine(message);
            }
        }
    }

使用方法:

string logFile = Path.ChangeExtension(Process.GetCurrentProcess().MainModule.FileName, ".log");
LogHelper.Init(logPath);

那么,程序中所有Trace.xxx输出的信息,就都会被记录下来。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
「转」VisualStudio2005(C#,VB.NET)的代码质量分析发布时间:2022-07-13
下一篇:
C#发送邮件的实现实例解析发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap