zoukankan      html  css  js  c++  java
  • 自己写一个Log类

     public class MyLogger
        {
            public static void Log(string str)
            {
                StreamWriter sw = null;
                try
                {
                    DirectoryInfo di = new DirectoryInfo(@"D:\testing");//获取D:\testing 目录的信息
                    if (!di.Exists)//如果没有该目录,则直接创建一个
                    {
                        di.Create();
                    }
                    FileInfo fileInfo = new FileInfo(@"D:\testing\test.txt");//获取 D:\testing\test.txt 文本的信息
                    if (!fileInfo.Exists)//同样的,如果没有该文件,则直接创建一个,注意使用CreateText创建完同时返回 StreamWriter 流
                    {
                        sw = fileInfo.CreateText();
                    }
                    else
                    {
                        sw = fileInfo.AppendText(); //存在该文件,则对该文件流进行写入叠加操作(即不覆盖掉之前写的东西)
                    }
                    sw.WriteLine(str);
                    sw.Flush(); //注意关闭文件流
                    sw.Close();
                    sw.Dispose();
                }
                catch (Exception ex)
                {
                    if (sw != null)
                    {
                        sw.Close();
                        sw.Flush();
                        sw = null;
                    }
    
                }
            }
        }

    调用

     MyLogger.Log("tesing......");

    把整个Exception类传递给一个方法

     /// <summary>
            /// 写错误日志
            /// </summary>
            /// <param name="objErr"></param>
            /// <param name="context"></param>
            public void WriteErrorLog(Exception objErr)
            {
                HttpContext context = HttpContext.Current;
                //Exception objErr = context.Server.GetLastError().GetBaseException();
                string strError = string.Empty;
                strError += "用户IP:" + context.Request.UserHostAddress + "\r\n";
                strError += "发生时间:" + System.DateTime.Now.ToString() + "\r\n";
                strError += "发生异常页: " + context.Request.Url.ToString() + "\r\n";
                strError += "异常信息: " + objErr.Message + "\r\n";
                strError += "异常方法: " + objErr.TargetSite + "\r\n";
                strError += "错误源:" + objErr.Source + "\r\n";
                strError += "错误堆栈信息:" + objErr.StackTrace + "\r\n";
                strError += "----------------------------------------------------------------------------------------------\r\n";
    
                //独占方式,因为文件只能由一个进程写入.
                System.IO.StreamWriter writer = null;
                try
                {
                    lock (this)
                    {
                        
                        // 写入日志
                        string year = DateTime.Now.Year.ToString(),
                               month = DateTime.Now.Month.ToString();
                        string filename = DateTime.Now.Day.ToString() + ".txt";
                        string path = context.Server.MapPath("~/Error/") + year + "/" + month;
                        //如果目录不存在则创建
                        if (!System.IO.Directory.Exists(path))
                        {
                            System.IO.Directory.CreateDirectory(path);
                        }
                        System.IO.FileInfo file = new System.IO.FileInfo(path + "/" + filename);
    
                        writer = new System.IO.StreamWriter(file.FullName, true);//文件不存在就创建,true表示追加
                        writer.Write(strError);
                    }
                }
                catch
                {
                    context.Response.Redirect("~/Error.html");
                }
                finally
                {
                    if (writer != null)
                    { writer.Flush(); writer.Close(); }
                }
            }

    建议:

      如非必要,Logger不要自己写,用Nlog或者log4net等第三方成熟控件。

  • 相关阅读:
    字符串旋转词、句子逆序化、字符串移位、最小字典序字符串问题
    字符串匹配算法——BF、KMP、Sunday
    字符串问题简述与两个基本问题的Java实现——判断二叉树拓扑结构关系与变形词
    PowerDesigner使用笔记
    SpringMVC学习笔记八:文件上传下载(转)
    小程序实现原理解析
    Flink流处理之迭代案例
    关于“淘宝爆款”的数据抓取与数据分析
    基于内容的推荐 java实现
    qt坐标系统与布局的简单入门
  • 原文地址:https://www.cnblogs.com/wanglee/p/2864794.html
Copyright © 2011-2022 走看看