通往成功之路

c#写日志(.text)

2018-06-06  本文已影响13人  此十八

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Web;

namespace BMCMInterface

{

    public class LogFiles

    {

        private static string _fileName;

        private static Dictionary lockDic = new Dictionary();

        ///        ///获取或设置文件名称        ///        public string FileName

        {

            get { return _fileName; }

            set { _fileName = value; }

        }

        ////        ///构造函数        ///        ///每次开辟位数大小,这个直接影响到记录文件的效率        ///文件全路径名        public LogFiles(string fileName)

        {

            _fileName = fileName;

        }

        ///        ///构造函数        ///        public LogFiles()

        { }

        ///        ///创建文件        ///        ///        public void Create()

        {

            if (System.IO.File.Exists(_fileName))

            {

                FileInfo logfileinfo = new FileInfo(_fileName);

                if (logfileinfo.Length > 10240000)

                {

                    GenerateNewLogFileName();

                }

            }

        }

        ///        ///写入文本        ///        ///文本内容        private void Write(string content, string newLine, string time)

        {

            if (string.IsNullOrEmpty(_fileName))

            {

                GenerateNewLogFileName();

            }

            Create();

            using (System.IO.FileStream fs = new System.IO.FileStream(_fileName, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.ReadWrite, System.IO.FileShare.ReadWrite, 8, System.IO.FileOptions.Asynchronous))

            {

                //Byte[] dataArray = System.Text.Encoding.ASCII.GetBytes(System.DateTime.Now.ToString() + content + "/r/n");                Byte[] dataArray = System.Text.Encoding.Default.GetBytes(time + "  " + content + newLine);

                bool flag = true;

                long slen = dataArray.Length;

                long len = 0;

                while (flag)

                {

                    try                    {

                        if (len >= fs.Length)

                        {

                            fs.Lock(len, slen);

                            lockDic[len] = slen;

                            flag = false;

                        }

                        else                        {

                            len = fs.Length;

                        }

                    }

                    catch (Exception ex)

                    {

                        while (!lockDic.ContainsKey(len))

                        {

                            len += lockDic[len];

                        }

                    }

                }

                fs.Seek(len, System.IO.SeekOrigin.Begin);

                fs.Write(dataArray, 0, dataArray.Length);

                fs.Close();

            }

        }

        ///        ///写入文件内容        ///        ///        public void WriteLine(string content)

        {

            this.Write(content, System.Environment.NewLine, DateTime.Now.ToString());

        }

        ///        ///写入文件        ///        ///        public void Write(string content)

        {

            this.Write(content, "", "");

        }

        ///        ///构造log文件名        ///        private void GenerateNewLogFileName()

        {

            //generate a new log file name            string strDateTimeString = string.Format("{0:yyyyMMddHHmm}", System.DateTime.Now);

            string LogFile_Name = strDateTimeString + ".log";

            _fileName = AppDomain.CurrentDomain.BaseDirectory + LogFile_Name;

        }

    }

}

//赋值:LogFile.FileName =AppDomain.CurrentDomain.BaseDirectory + "logText.log"; //调用:LogFile.WriteLine("获取异常:" + ex.Message + sql);

上一篇 下一篇

猜你喜欢

热点阅读