zoukankan      html  css  js  c++  java
  • 自制迷你日志类

      写网站程序的时候,都要把异常写入日志吧,比较常用的是Log4Net,不过我要求不高,只需要把异常和信息记在网站服务器的网站目录下就可以了,于是我自己写了一个。

        public static class Logger
        {
            private static readonly object Obj = new object();
    
            public static void Log(string title, string msg)
            {
                LogError(title, msg);
            }
    
            public static void Error(string title, Exception ex)
            {
                if (ex == null)
                {
                    return;
                }
    
                var sb = new StringBuilder();
                sb.AppendLine(ex.Message).AppendLine(ex.StackTrace);
    
                foreach (IDictionary value in ex.Data.Values)
                {
                    if (value != null)
                    {
                        foreach (DictionaryEntry entry in value)
                        {
                            sb.Append("Key:").Append(entry.Key).Append(",Value:").AppendLine(entry.Value.ToString());
                        }
                    }
                }
    
                if (ex.InnerException != null)
                {
                    sb.Append("InnerMessage:")
                        .AppendLine(ex.InnerException.Message)
                        .Append("InnerStackTrace:")
                        .AppendLine(ex.InnerException.StackTrace);
    
                    foreach (IDictionary value in ex.InnerException.Data.Values)
                    {
                        if (value != null)
                        {
                            foreach (DictionaryEntry entry in value)
                            {
                                sb.Append("InnerKey:")
                                    .Append(entry.Key)
                                    .Append(",InnerValue:")
                                    .AppendLine(entry.Value.ToString());
                            }
                        }
                    }
                }
    
                LogError(title, sb.ToString());
            }
    
            private static void LogError(string title, string msg)
            {
                string filePath = Path.GetDirectoryName(HttpRuntime.AppDomainAppPath) + "\log\" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
    
                lock (Obj)
                {
                    try
                    {
                        File.AppendAllText(filePath, string.Format("{0:HH:mm:ss}:{1}:{2}
    ", DateTime.Now, title, msg));
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                    }
                }
            }
        }

      记录普通信息没什么难的,记录异常的话就要选择记录哪些信息了,这里我没把Source,HelpLink和TargetSite记录下来,因为我感觉他们没什么用,这里唯一难点的就是写日志加锁,为何要加锁呢,因为同一文件同一时间只能被一个进行写入呀,把日志类搞成静态类也是出于这个考虑的。

  • 相关阅读:
    [CF1038F]Wrap Around[AC自动机+dp]
    [LOJ#6198]谢特[后缀数组+trie+并查集]
    [CF986F]Oppa Funcan Style Remastered[exgcd+同余最短路]
    [CF587F]Duff is Mad[AC自动机+根号分治+分块]
    [CF995F]Cowmpany Cowmpensation[树形dp+拉格朗日插值]
    [CF917D]Stranger Trees[矩阵树定理+解线性方程组]
    [CF1007D]Ants[2-SAT+树剖+线段树优化建图]
    [CF1007B]Pave the Parallelepiped[组合计数+状态压缩]
    [CF1010E]Store[kd-tree]
    【JZOJ3598】【CQOI2014】数三角形
  • 原文地址:https://www.cnblogs.com/hambert/p/4252190.html
Copyright © 2011-2022 走看看