using System;
using System.Collections.Generic;
using System.Text;

namespace PublicClass
{
    public static class Log
    {
        public static void WriteLine(string line)
        {
            try
            {
                System.Diagnostics.Debug.Assert((line != null), " public static void WriteLine(string line) line 不能为空!");

                line = String.Format("#############{0}################## \r\n{{\r\n   {1}  \r\n}}\r\n", DateTime.Now.ToString(), line);
                line += "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r\n\r\n\r\n";
                line = "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r\n" + line;
                lock (line)
                {
                    //增加每一天记录一个Log文件
                    string FileName = string.Format("~/Sys_Log/{0}.log", DateTime.Now.ToString("yyyy-MM-dd"));
                    string FilePath=System.Web.HttpContext.Current.Request.MapPath(FileName);
                    if (System.IO.File.Exists(FilePath))
                    {
                        System.IO.File.SetAttributes(FilePath, System.IO.FileAttributes.Normal); //如果存在就将该文件的属性更改成可读写
                    }
                    else
                    {
                        if(!System.IO.Directory.Exists(System.Web.HttpContext.Current.Request.MapPath("~/Sys_Log/")))
                        {
                            System.IO.Directory.CreateDirectory(System.Web.HttpContext.Current.Request.MapPath("~/Sys_Log/"));
                        }
                        System.IO.File.Create(FilePath);
                    }
                    System.IO.FileStream f = new System.IO.FileStream(FilePath, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite, System.IO.FileShare.ReadWrite);
                    byte[] buff = System.Text.ASCIIEncoding.Default.GetBytes(line);

                    long len = f.Length;
                    f.Seek(len, System.IO.SeekOrigin.Begin);
                    f.Write(buff, 0, buff.Length);
                    f.Close();
                }
            }
            catch (System.IO.IOException e)
            {
                throw (e);
            }
        }

        public static void WriteError(Exception err)
        {
            try
            {
                string line = String.Format(" \r\n{0}; \r\n{1};\r\n{2} ;\r\n", err.Message, err.Source, err.StackTrace);
                WriteLine(line);
            }
            catch (System.IO.IOException e)
            {
                throw (e);
            }
        }

    }
}

posted on 2009-11-23 09:31  GT_Andy  阅读(294)  评论(0)    收藏  举报