c# 日志类

来源:互联网 发布:发票验旧需要什么数据 编辑:程序博客网 时间:2024/06/15 22:26

using System;
using System.IO;


namespace LOG
{
    /// <summary>

    /// 日志类

    /// </summary>
    ///
    public class LogInfo
    {
        /// <summary>

        /// 日志文件大小

        /// </summary>

        private int fileSize;


        /// <summary>

        /// 日志文件的路径

        /// </summary>

        private string fileLogPath;


        /// <summary>

        /// 日志文件的名称

        /// </summary>

        private string logFileName;


        /// <summary>

        /// 构造函数,初始化日志文件大小[2M]

        /// 可以使用相关属性对其进行更改.

        /// </summary>

        public LogInfo()
        {
            //初始化大于2M日志文件将自动删除;

            this.fileSize = 2048 * 1024;//2M

            //默认路径

            this.fileLogPath = @"c:\logFils\";
            this.logFileName = "日志.txt";
        }

        /// <summary>
        /// 获取或设置定义日志文件大小
        /// </summary>
        public int FileSize
        {
            set
            {
                fileSize = value;
            }
            get
            {
                return fileSize;
            }
        }


        /// <summary>
        /// 获取或设置日志文件的路径
        /// </summary>
        public string FileLogPath
        {
            set
            {
                this.fileLogPath = value;
            }
            get
            {
                return this.fileLogPath;
            }
        }


        /// <summary>
        /// 获取或设置日志文件的名称
        /// </summary>
        public string LogFileName
        {
            set
            {
                this.logFileName = value;
            }
            get
            {
                return this.logFileName;
            }

        }


        /// <summary>
        /// 向指定目录中的指定的文件中追加日志文件
        /// </summary>
        /// <param name="Message">要写入的内容</param>
        public void WriteLog(string Message)
        {
            this.WriteLog(this.logFileName, Message);
        }


        /// <summary>
        /// 向指定目录中的文件中追加日志文件,日志文件的名称将由传递的参数决定.
        /// </summary>
        /// <param name="LogFileName">日志文件的名称,如:mylog.txt ,如果没有自动创建,如果存在将追加写入日志</param>
        /// <param name="Message">要写入的内容</param>
        public void WriteLog(string LogFileName, string Message)
        {

            //DirectoryInfo path=new DirectoryInfo(LogFileName);
            //如果日志文件目录不存在,则创建
            if (!Directory.Exists(this.fileLogPath))
            {
                Directory.CreateDirectory(this.fileLogPath);
            }

            FileInfo finfo = new FileInfo(this.fileLogPath + LogFileName);
            if (finfo.Exists && finfo.Length > fileSize)
            {
                finfo.Delete();
            }
            try
            {
                FileStream fs = new FileStream(this.fileLogPath + LogFileName, FileMode.Append);
                StreamWriter strwriter = new StreamWriter(fs);
                try
                {

                    DateTime d = DateTime.Now;
                    strwriter.WriteLine("时间:" + d.ToString());
                    strwriter.WriteLine(Message);
                    strwriter.WriteLine();
                    strwriter.Flush();
                }
                catch (Exception ee)
                {
                    Console.WriteLine("日志文件写入失败信息:" + ee.ToString());
                }
                finally
                {
                    strwriter.Close();
                    strwriter = null;
                    fs.Close();
                    fs = null;
                }
            }
            catch (Exception ee)
            {
                Console.WriteLine("日志文件没有打开,详细信息如下:", ee.Message);
            }
        }
    }


    /// <summary>

    /// 静态日志类

    /// </summary>
    ///
    public class Static_LogInfo
    {
        /// <summary>

        /// 日志文件大小

        /// </summary>

        private static int fileSize = 2048 * 1024;//2M


        /// <summary>

        /// 日志文件的路径

        /// </summary>

        private static string fileLogPath = @"c:\logFils\";


        /// <summary>

        /// 日志文件的名称

        /// </summary>

        private static string logFileName = "日志.txt";


        /// <summary>
        /// 获取或设置定义日志文件大小
        /// </summary>
        public static int FileSize
        {
            set
            {
                fileSize = value;
            }
            get
            {
                return fileSize;
            }
        }


        /// <summary>
        /// 获取或设置日志文件的路径
        /// </summary>
        public static string FileLogPath
        {
            set
            {
                fileLogPath = value;
            }
            get
            {
                return fileLogPath;
            }
        }


        /// <summary>
        /// 获取或设置日志文件的名称
        /// </summary>
        public static string LogFileName
        {
            set
            {
                logFileName = value;
            }
            get
            {
                return logFileName;
            }

        }


        /// <summary>
        /// 向指定目录中的指定的文件中追加日志文件
        /// </summary>
        /// <param name="Message">要写入的内容</param>
        public static void WriteLog(string Message)
        {
            WriteLog(logFileName, Message);
        }


        /// <summary>
        /// 向指定目录中的文件中追加日志文件,日志文件的名称将由传递的参数决定.
        /// </summary>
        /// <param name="LogFileName">日志文件的名称,如:mylog.txt ,如果没有自动创建,如果存在将追加写入日志</param>
        /// <param name="Message">要写入的内容</param>
        public static void WriteLog(string LogFileName, string Message)
        {

            //DirectoryInfo path=new DirectoryInfo(LogFileName);
            //如果日志文件目录不存在,则创建
            if (!Directory.Exists(fileLogPath))
            {
                Directory.CreateDirectory(fileLogPath);
            }

            FileInfo finfo = new FileInfo(fileLogPath + LogFileName);
            if (finfo.Exists && finfo.Length > fileSize)
            {
                finfo.Delete();
            }
            try
            {
                FileStream fs = new FileStream(fileLogPath + LogFileName, FileMode.Append);
                StreamWriter strwriter = new StreamWriter(fs);
                try
                {

                    DateTime d = DateTime.Now;
                    strwriter.WriteLine("时间:" + d.ToString());
                    strwriter.WriteLine(Message);
                    strwriter.WriteLine();
                    strwriter.Flush();
                }
                catch (Exception ee)
                {
                    Console.WriteLine("日志文件写入失败信息:" + ee.ToString());
                }
                finally
                {
                    strwriter.Close();
                    strwriter = null;
                    fs.Close();
                    fs = null;
                }
            }
            catch (Exception ee)
            {
                Console.WriteLine("日志文件没有打开,详细信息如下:", ee.Message);
            }
        }
    }
}


注:

1、程序模块少的话,并且日志比较少的时候,用一个日志文件就搞定了,在文件大小达到一定的容量的时候可以删除掉,下次重新创建日志文件

2、程序模块多的时候,并且日志比较的时候,日志文件可以选择按模块来,每个模块再按天来,到规定期限的天数再把日志文件删除掉,下次重新创建日志文件




0 0