当前位置:编程学习 > C#/ASP.NET >>

c#日志组件

 

最近做一个c++的服务端小项目,写了一个简单的日志组件,这两天用c#翻译了一遍,写起来比c++快多了,给大家分享一下! 

  组件运行起来后,所有的日志信息都会被缓存到一个集合中,然后由一个单独线程负责将集合中的日志信息写入文件。

  支持功能如下:

  1、日志信息可按等级进行存储;

      2、支持日志文件到达指定大小自动更换;

      3、只保存最近一个月的日志文件;

      4、支持多线程环境下的日志记录;

  大致就这么几点,功能也挺简单的,下面是组件接口:

using System;

 

namespace Soar.Framework

{

    /// <summary>

    /// 日志组件

    /// </summary>

    public interface ILogger

    {

        /// <summary>

        /// 启动日志组件

        /// </summary>

        bool Run();

 

        /// <summary>

        /// 启动日志组件

        /// </summary>

        /// <param name="logLevel">等级</param>

        /// <param name="logDirectory">日志文件存放目录(例如:logs\\)</param>

        /// <param name="maxFileSize">单个日志文件默认大小(单位:MB)</param>

        /// <returns></returns>

        bool Run(LogLevel logLevel, string logDirectory, int maxFileSize);

 

        /// <summary>

        /// 获取当前设置的日志记录等级

        /// </summary>

        /// <returns></returns>

        string GetLevel();

 

        /// <summary>

        /// 设置日志记录等级

        /// </summary>

        /// <param name="logLevel"></param>

        /// <returns></returns>

        bool SetLevel(LogLevel logLevel);

 

        /// <summary>

        /// 记录调试信息

        /// </summary>

        /// <param name="msg"></param>

        void Debug(string msg);

 

        /// <summary>

        /// 记录一般信息

        /// </summary>

        /// <param name="msg"></param>

        void Info(string msg);

 

        /// <summary>

        /// 记录警告信息

        /// </summary>

        /// <param name="msg"></param>

        void Warn(string msg);

 

        /// <summary>

        /// 记录一般错误信息

        /// </summary>

        /// <param name="msg"></param>

        void Error(string msg);

 

        /// <summary>

        /// 记录严重错误信息

        /// </summary>

        /// <param name="msg"></param>

        void Fatal(string msg);

    }

}

   具体调用方式请参见源码,在编写该日志组件时,需要注意一点:

 使用Create.File创建文件,该方法返回的是一个FileStream对象,且该对象会一直占用你创建的文件,使你无法对创建的文件进行操作,

   所以需要在创建文件后,对返回的对象进行手动释放。

            if (!File.Exists(filePath))

            {

                FileStream fs = File.Create(filePath);

                fs.Flush();

                fs.Close();

            }

补充:软件开发 , C# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,