public class LogWrite
    {
        public LogWrite()
        {
            //
            // TODO: 在此处添加构造函数逻辑
            //
        }
        #region Constant
        //单个日志文件大小
        private const long FILESIZE =  *  * ;
 
        //日志文件数
        private const int LOGFILENUM = ;
 
        //日志类型
        private const short DEBUG = ;
        private const short INFO = ;
        private const short WARNING = ;
        private const short ERROR = ;
 
        //日志级别
        private const short LOGLEVEL = DEBUG;
        #endregion
 
        #region Members
 
        //日志文件路径
        private string m_LogDir = System.Windows.Forms.Application.StartupPath + "\\module0\\Log";
        private string m_filePath = System.Windows.Forms.Application.StartupPath + "\\module0\\Log\\Log.txt";//工作日志文件
 
        private static LogWrite m_Log = null;
        private Object objLock = new Object();
        private string destClass = string.Empty;
        #endregion
 
        #region Properties
        /// <summary>
        /// 记录日志的类名
        /// </summary>
        public string DestClass
        {
            get { return destClass; }
            set { destClass = value; }
        }
 
        #endregion
 
        #region Ctor
 
        #endregion
 
        #region Public Methods
 
        /// <summary>
        /// 创建日志类实例
        /// </summary>
        /// <returns></returns>
        public static LogWrite CreateInstance()
        {
            if (m_Log == null)
            {
                m_Log = new LogWrite();
            }
            return m_Log;
        }
 
 
        /// <summary>
        /// 写信息日志
        /// </summary>
        /// <param name="content"></param>
        public void Info(string content)
        {
            if (LOGLEVEL <= )
            {
                lock (objLock)
                {
                    WriteLog(content, LogWrite.INFO);
                }
            }
        }
 
        /// <summary>
        /// 写调试日志
        /// </summary>
        /// <param name="content"></param>
        public void Debug(string content)
        {
            if (LOGLEVEL <= )
            {
                lock (objLock)
                {
                    WriteLog(content, LogWrite.DEBUG);
                }
            }
        }
 
        /// <summary>
        /// 写警告日志
        /// </summary>
        /// <param name="content"></param>
        public void Warning(string content)
        {
            if (LOGLEVEL <= )
            {
                lock (objLock)
                {
                    WriteLog(content, LogWrite.WARNING);
                }
            }
        }
 
        /// <summary>
        /// 写错误日志
        /// </summary>
        /// <param name="content"></param>
        public void Error(string content)
        {
            if (LOGLEVEL <= )
            {
                lock (objLock)
                {
                    WriteLog(content, LogWrite.ERROR);
                }
            }
        }
 
 
        #endregion
 
        #region Private Methods
 
        /// <summary>
        /// 写日志
        /// </summary>
        /// <param name="content"></param>
        /// <param name="type"></param>
        private void WriteLog(string content, short type)
        {
            if (content == null || content.Equals(string.Empty))
            {
                return;
            }
            try
            {
                if (!File.Exists(m_filePath))
                {
                    CreateWorkLogFile();
                }
 
                if (LogFileIsTooLarge(m_filePath))
                {
                    ProcessLogFile();
                }
 
                string strType = "";
                switch (type)
                {
                    case DEBUG:
                        strType = " [DEBUG] ";
                        break;
                    case INFO:
                        strType = " [INFO] ";
                        break;
                    case WARNING:
                        strType = " [WARNING] ";
                        break;
                    case ERROR:
                        strType = " [ERROR] ";
                        break;
                    default:
                        strType = " [INFO] ";
                        break;
                }
                string strContent = string.Format("{0}\t{1}\t[{2}]\t{3}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), strType, DestClass, content);
                StreamWriter sWriter = new StreamWriter(m_filePath, true, System.Text.Encoding.Default);
                sWriter.WriteLine(strContent);
                sWriter.Flush();
                sWriter.Close();
                sWriter = null;
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.Message);
            }
        }
        /// <summary>
        /// 创建工作日志文件
        /// </summary>
        private void CreateWorkLogFile()
        {
            if (!Directory.Exists(m_LogDir))
            {
                Directory.CreateDirectory(m_LogDir);
            }
            FileStream fStream = new FileStream(m_filePath, FileMode.CreateNew);
            fStream.Flush();
            fStream.Close();
            fStream = null;
        }
 
 
        /// <summary>
        /// 判断日志文件是否超过预定义最大值
        /// </summary>
        /// <param name="fileName"></param>
        /// <returns></returns>
        private bool LogFileIsTooLarge(string fileName)
        {
            FileInfo fi = new FileInfo(fileName);
            if (fi.Length >= FILESIZE)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
 
 
        /// <summary>
        /// 处理日志文件(工作日志文件超过最大值)
        /// </summary>
        private void ProcessLogFile()
        {
            try
            {
                DirectoryInfo dirInfo = new DirectoryInfo(m_LogDir);
                FileInfo[] vFileInfo = dirInfo.GetFiles("*.txt");
                if (vFileInfo != null && vFileInfo.Length > LOGFILENUM)
                {
                    FileInfo oldFile = vFileInfo[];
                    foreach (FileInfo fi in vFileInfo)
                    {
                        if (DateTime.Compare(fi.LastWriteTime, oldFile.LastWriteTime) < )
                        {
                            oldFile = fi;
                        }
                    }
                    File.Delete(oldFile.FullName);
                }
                File.Copy(m_filePath, m_LogDir + "\\" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".txt");
                File.Delete(m_filePath);
                CreateWorkLogFile();
            }
            catch
            {
 
            }
        }
 
        #endregion
    }

类的路径需要修改下,就OK 了

private string m_LogDir = System.Windows.Forms.Application.StartupPath + "\\module0\\Log";
private string m_filePath = System.Windows.Forms.Application.StartupPath + "\\module0\\Log\\Log.txt";//工作日志文件

用的时候 只要实例就行了

private LogWrite m_Log = null;

//构造函数里
m_Log = module0.WritLog.LogWrite.CreateInstance();
m_Log.set_DestClass
//输出日志在地方
m_Log.Info(System.DateTime.get_Now().ToString() + " :... ");

c# 程序检测日志输出的类的更多相关文章

  1. 关于在Eclipse上运行Hadoop程序的日志输出问题

    在安装由Eclipse-Hadoop-Plugin的Eclipse中, 可以直接运行Hadoop的MapReduce程序, 但是如果什么都不配置的话你发现Eclipse控制台没有任何日志输出, 这个问 ...

  2. iOS项目之使用开关控制日志输出的功能

    最近一直在做sdk的项目,用户提出了一个需求,需要屏蔽sdk内部的日志输出.由于sdk内部的日志是为了调试,如果屏蔽了肯定不方便,所以研究了一下日志输出开关的功能. 在这里介绍两种实现方案:一种方案是 ...

  3. Log4j将不同Package的日志输出到不同的文件的方法

    随着项目规模的越来越大,会不断的引入新的模块,不同的模块都会打印自己的日志,最后就造成日志根本没法查看,比如我自己的项目中,就存在以下这些日志: 接收外界消息的日志.对外发送消息的日志: 后台常驻线程 ...

  4. Log4j将不同Package的日志输出到不同的文件

    转自:http://www.crazyant.net/1931.html 随着项目规模的越来越大,会不断的引入新的模块,不同的模块都会打印自己的日志,最后就造成日志根本没法查看,比如我自己的项目中,就 ...

  5. Qt编写调试日志输出类带网络转发(开源)

    用qt开发商业程序已经九年了,陆陆续续开发过至少几十个程序,除了一些算不算项目的小工具外,大部分的程序都需要有个日志的输出功能,希望可以将程序的运行状态存储到文本文件或者数据库或者做其他处理等,qt对 ...

  6. Java基础-继承-编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight。小车类Car是Vehicle的子类,其中包含的属性有载人数 loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。每个 类都有构造方法和输出相关数据的方法。最后,写一个测试类来测试这些类的功 能。

    #29.编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight.小车类Car是Vehicle的子类,其中包含的属性有载人数 loader.卡车类T ...

  7. 使用Monitor调试Unity3D Android程序日志输出(非DDMS和ADB)

    使用Monitor调试Unity3D Android程序日志输出(非DDMS和ADB) http://www.cnblogs.com/mrkelly/p/4015245.html 以往调试Androi ...

  8. springboot+logback日志输出企业实践(上)

    目录 1.引言 2.logback简介 3. springboot默认日志框架-logback 3.1 springboot示例工程搭建 3.2 日志输出与基本配置 3.2.1 日志默认输出 3.2. ...

  9. Java自定义日志输出文件

    Java自定义日志输出文件 日志的打印,在程序中是必不可少的,如果需要将不同的日志打印到不同的地方,则需要定义不同的Appender,然后定义每一个Appender的日志级别.打印形式和日志的输出路径 ...

随机推荐

  1. 微分方程——包络和奇解

    对某些微分方程,存在一条(也可能多条)特殊的积分曲线,它并不属于方程的积分曲线族.但是,在这条特殊的积分曲线上的每一点处,都有积分曲线族中的一条曲线和它在此点相切.在几何学上,这条特殊的积分曲线称为上 ...

  2. AngularJS 中利用 Interceptors 来统一处理 HTTP 的错误(reproduce)

    原文:http://chensd.com/2016-03/Angular-Handle-Global-Http-Error-with-Interceptors.html?utm_source=tuic ...

  3. git初始化

    git init:初始化 git status:查看当前目录下文件状态 git add -A(表示添加当前目录下所有文件)/文件名(表示只添加该一个文件) git commit -m '':提交到本地 ...

  4. Couchbase之个人描述及入门示例

    本文不打算抄袭官方或者引用他人对Couchbase的各种描述,仅仅是自己对它的一点理解(错误之处,敬请指出),并附上一个入门示例. ASP.NET Web项目(其他web开发平台也一样)应用规模小的时 ...

  5. (转载)SQL Server 2005 如何启用xp_cmdshell组件

    原文地址:http://www.cnblogs.com/atree/p/SQL_SERVER_xp_cmdshell.html [错误描述]: SQL Server阻止了对组件‘xp_cmdshell ...

  6. No.014 Longest Common Prefix

    14. Longest Common Prefix Total Accepted: 112204 Total Submissions: 385070 Difficulty: Easy Write a ...

  7. zedboard如何从PL端控制DDR读写(五)

    有了前面的一堆铺垫.现在终于开始正式准备读写DDR了,开发环境:VIVADO2014.2 + SDK. 一.首先要想在PL端通过AXI去控制DDR,我们必须要有一个AXI master,由于是测试,就 ...

  8. 【227】◀▶ IDL 其他常用函数

    参考:Programming and Control Routines —— 编程和控制函数 01   N_ELEMENTS 表达式或者变量的元素个数. 02   DEFSYSV 定义系统变量. 03 ...

  9. 前端Html+Css——豆蔻年华(自学一个月)

    详细见千万别碰我--燕十三 html .htm .shtml三者区别是什么 1..htm与.html没有本质上的区别,表示的是同一种文件,只是适用于不同的环境之下. 2.DOS仅能识别8+3的文件名, ...

  10. VC++ 标准C++中的string类的用法总结

    相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用.但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯 ...