• 自己写一个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等第三方成熟控件。

  • 相关阅读:
    ado 查询文件数据库
    S60平台简体汉字处理浅谈转symbian wiki
    symbian在收件箱创建短信(转)
    symbian得到收件箱中未读短信的数目
    enable marquee with the animated in the ListBox
    如何为Series60绘制一个常驻顶端的提示图标 [symbian]
    Symbian 得到左右软键项(CBA)的内容
    asp.net 中如何请求一个其它网站的页面
    使S60程序全屏运行,fullscreen
    symbian程序在后台运行
  • 原文地址:https://www.cnblogs.com/wanglee/p/2864794.html
Copyright © 2020-2023  润新知