Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 大叔也說Xamarin~Android篇~日志的記錄,xamarinandroid

大叔也說Xamarin~Android篇~日志的記錄,xamarinandroid

編輯:關於android開發

大叔也說Xamarin~Android篇~日志的記錄,xamarinandroid


無論哪個平台,開始哪種應用程序,日志總是少不了的,大家在Lind.DDD裡也可以看到大叔的日志組件,而在xamarin進行移動開發時,為了更好的調試,記錄運行的情況,日志也是必須的,這講主要說一下在xamarin for android開發時,日志組件的實現。

對於android平台有自己的日志組件,它主要在輸出窗口進行輸出,而我們有時需要它將日志寫入到磁盤,對於手機可以是sdCard等,這時就需要我們自己封裝一個日志組件了。

依舊面向對象的設計

上面是在Android的綁定類庫裡建立的日志組件,我們的Jar原生組件也可以放在這個綁定類庫項目裡,以後在開發時,直接引用這個項目即可

被簡化了個日志行為和級別

 /// <summary>
    /// 日志功能接口規范
    /// </summary>
    public interface ILogger
    {
        #region 級別日志
        /// <summary>
        /// 將message記錄到日志文件
        /// </summary>
        /// <param name="message"></param>
        void Logger_Info(string message);
        /// <summary>
        /// 異常發生的日志
        /// </summary>
        /// <param name="message"></param>
        void Logger_Error(Exception ex);
        /// <summary>
        /// 調試期間的日志
        /// </summary>
        /// <param name="message"></param>
        void Logger_Debug(string message);
        /// <summary>
        /// 引起程序終止的日志
        /// </summary>
        /// <param name="message"></param>
        void Logger_Fatal(string message);
        /// <summary>
        /// 引起警告的日志
        /// </summary>
        /// <param name="message"></param>
        void Logger_Warn(string message);
        #endregion

    }
   /// <summary>
    /// 日志級別:DEBUG|INFO|WARN|ERROR|FATAL|OFF
    /// </summary>
    internal enum Level
    {

        /// <summary>
        /// 記錄DEBUG|INFO|WARN|ERROR|FATAL級別的日志
        /// </summary>
        DEBUG,
        /// <summary>
        /// 記錄INFO|WARN|ERROR|FATAL級別的日志
        /// </summary>
        INFO,
        /// <summary>
        /// 記錄WARN|ERROR|FATAL級別的日志
        /// </summary>
        WARN,
        /// <summary>
        /// 記錄ERROR|FATAL級別的日志
        /// </summary>
        ERROR,
        /// <summary>
        /// 記錄FATAL級別的日志
        /// </summary>
        FATAL,
        /// <summary>
        /// 關閉日志功能
        /// </summary>
        OFF,
    }

LoggerBase作為日志實現的基類,在Lind.DDD中已經介紹過,這裡只說一下文件路徑的選擇,android與pc有些不同,因為前者有sd卡的概念

     /// <summary>
        /// 日志文件地址
        /// 沒有sdCard則存儲到手機上
        /// </summary>
        protected string FileUrl
        {
            get
            {

                if (Android.OS.Environment.GetExternalStorageState(Android.OS.Environment.RootDirectory).Equals(
                      Android.OS.Environment.MediaMounted))
                    return "/" + Android.OS.Environment.MediaMounted;
                else
                    return "/Logger";


            }

        }

單例模式,讓你的程序只建立一次日志實例對象

這裡只有一個日志實現方式我就寫死了,日後有多種,可以寫在配置裡

/// <summary> /// 日志生產類 /// Singleton模式和策略模式和工廠模式 /// </summary> public sealed class LoggerFactory : ILogger { #region Logger有多種實現時,需要使用Singleton模式 /// <summary> /// 對外不能創建類的實例 /// </summary> private LoggerFactory() { string type = "file"; switch (type) { case "file": iLogger = new NormalLogger(); break; default: throw new ArgumentException("請正確配置AppSetting的LoggerType節點(file,log4net,mongodb)"); } } /// <summary> /// 日志級別 /// </summary> private static Level level = Level.DEBUG; /// <summary> /// 線程鎖 /// </summary> private static object lockObj = new object(); /// <summary> /// 日志工廠 /// </summary> private static LoggerFactory instance; /// <summary> /// 日志提供者,只在本類中實例化 /// </summary> private ILogger iLogger; /// <summary> /// 單例模式的日志工廠對象 /// </summary> public static LoggerFactory Instance { get { if (instance == null) { lock (lockObj) { if (instance == null) { instance = new LoggerFactory(); } } } return instance; } } #endregion #region ILogger 成員 public void Logger_Debug(string message) { if (level <= Level.DEBUG) iLogger.Logger_Debug(message); } public void Logger_Info(string message) { if (level <= Level.INFO) iLogger.Logger_Info(message); } public void Logger_Warn(string message) { if (level <= Level.WARN) iLogger.Logger_Warn(message); } public void Logger_Error(Exception ex) { if (level <= Level.ERROR) iLogger.Logger_Error(ex); } public void Logger_Fatal(string message) { if (level <= Level.FATAL) iLogger.Logger_Fatal(message); } #endregion } View Code

程序在運行之後,我們觀察sdcard的根目錄,日志已經存在了

日志內容是我們進行格式化之後的,感覺還是比較清晰的

從上面的圖中可以看到,我們的日志級別Info,Error也都體現出來了。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved