程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> c#日志組件

c#日志組件

編輯: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();

            }

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved