zoukankan      html  css  js  c++  java
  • c#: 简单的日志管理类(TextWriterTraceListener)

    以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("
    " + 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输出的信息,就都会被记录下来。

  • 相关阅读:
    quick-cocos2d-x + Lua 开发
    设置 Quick-Cocos2d-x 在 Windows 下的编译环境
    luaIDE选择
    接管radiobutton onclick 事件
    AlphaControls的使用方法
    Delphi程序调用C#.Net编译的DLL并打开窗体(详解)
    delphi 正则表达式
    Windows server 2003 伪静态配置方法
    windows 2003 iis php
    Linux Shell系列教程之(十一)Shell while循环
  • 原文地址:https://www.cnblogs.com/crwy/p/10223824.html
Copyright © 2011-2022 走看看