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

C# 使用Log4Net記錄日志(進階篇)

編輯:C#入門知識

C# 使用Log4Net記錄日志(進階篇)


配置文件log4net_config.xml中的內容如下:

 


		
- %message%newline /> - %message%newline />
該配置文件可以用於往文本文件及sql server數據庫中記錄日志(啟用哪一個由下面的配置決定):

 

 


 

日志類封裝:

 

/// 
    /// 日志記錄類(記錄到數據庫)
    /// 
    public static class LogisTracToSqlDB
    {
        private static readonly log4net.ILog m_log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        private const string LOG4NET_CONFIG = log4net_config.xml;

        static LogisTracToSqlDB()
        {
            try
            {
                ConfigureLoad();
            }
            catch { }
        }

        /// 
        /// 輸出日志
        /// 
        ///
        public static void WriteLog(string sInfo)
        {
            m_log.Error(sInfo);
        }
        /// 
        /// 記錄debug信息
        /// 
        ///
        public static void WriteLog(Exception e)
        {
            WriteLog(e.ToString());
            //WriteLog(--------------------------------------[本次異常開始]--------------------------------------);
            //WriteLog(Message :  + e.Message);
            //WriteLog(Source :  + e.Source);
            //WriteLog(StackTrace :  + e.StackTrace);
            //WriteLog(TargetSite :  + e.TargetSite);
            //WriteLog(--------------------------------------[本次異常結束]--------------------------------------
);
        }

        /// 
        /// 配置log4net環境
        /// 
        private static void ConfigureLoad()
        {
            XmlDocument doc = new XmlDocument();
            //使用當前dll路徑
            string sPath = FilesOperate.GetAssemblyPath();
            if (!sPath.EndsWith(\))
            {
                sPath += \;
            }                  
            sPath += LOG4NET_CONFIG;
            doc.Load(@sPath);
            XmlElement myElement = doc.DocumentElement;
            log4net.Config.XmlConfigurator.Configure(myElement);
        }
    }
    /// 
    /// 日志記錄類(記錄到文本文件中)
    /// 
    public static class LogisTrac
    {
        private static readonly string LOG_DIR = 日志;
        private static readonly string LOG_FILE = LOG_DIR + \log + System.DateTime.Now.ToString(yyyy-MM-dd) + .txt;
        private const string LOG4NET_CONFIG = log4net_config.xml;
        private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(typeof(LogisTrac));


        static LogisTrac()
        {
            try
            {
                ConfigureLoad();
            }
            catch { }
        }

        /// 
        /// 返回ILog接口
        /// 
        private static log4net.ILog Log
        {
            get
            {
                return m_log;
            }
        }

        /// 
        /// 輸出日志
        /// 
        ///
        public static void WriteLog(string sInfo)
        {
            m_log.Error(sInfo);
        }


        /// 
        /// 記錄debug信息
        /// 
        ///
        public static void WriteLog(Exception e)
        {
            WriteLog(--------------------------------------[本次異常開始]--------------------------------------);
            WriteLog(Message :  + e.Message);
            WriteLog(Source :  + e.Source);
            WriteLog(StackTrace :  + e.StackTrace);
            WriteLog(TargetSite :  + e.TargetSite);
            WriteLog(--------------------------------------[本次異常結束]--------------------------------------
);
        }

        /// 
        /// 配置log4net環境
        /// 
        private static void ConfigureLoad()
        {
            XmlDocument doc = new XmlDocument();
            //使用當前dll路徑
            string sPath = FilesOperate.GetAssemblyPath();

            if (!sPath.EndsWith(\))
            {
                sPath += \;
            }

            //查看Log文件夾是否存在,如果不存在,則創建
            string sLogDir = sPath + LOG_DIR;
            if (!Directory.Exists(sLogDir))
            {
                Directory.CreateDirectory(sLogDir);
            }
            string sLogFile = sPath + LOG_FILE;
            sPath += LOG4NET_CONFIG;
            doc.Load(@sPath);
            XmlElement myElement = doc.DocumentElement;

            //修改log.txt的路徑
            XmlNode pLogFileAppenderNode = myElement.SelectSingleNode(descendant::appender[@name='LogFileAppender']/file);
            // Create an attribute collection from the element.
            XmlAttributeCollection attrColl = pLogFileAppenderNode.Attributes;
            attrColl[0].Value = sLogFile;

            log4net.Config.XmlConfigurator.Configure(myElement);
        }

    }

    /// 
    /// 文件 操作
    /// 
    public static class FilesOperate
    {
        /// 
        /// 獲取App的當前路徑 \結束
        /// 
        /// 
        public static string getAppPath()
        {
            return GetAssemblyPath();
        }

        /// 
        /// 獲取Assembly的運行路徑 \結束
        /// 
        /// 
        public static string GetAssemblyPath()
        {
            string sCodeBase = System.Reflection.Assembly.GetExecutingAssembly().CodeBase;

            sCodeBase = sCodeBase.Substring(8, sCodeBase.Length - 8);    // 8是 file:// 的長度

            string[] arrSection = sCodeBase.Split(new char[] { '/' });

            string sDirPath = ;
            for (int i = 0; i < arrSection.Length - 1; i++)
            {
                sDirPath += arrSection[i] + Path.DirectorySeparatorChar;
            }

            return sDirPath;
        }

        /// 
        /// 文件夾復制
        /// 
        ///原始路徑
        ///目標路徑
        /// 
        public static bool CopyDirectory(string sSourceDirName, string sDestDirName)
        {
            if (string.IsNullOrEmpty(sSourceDirName) || string.IsNullOrEmpty(sDestDirName))
            {
                return false;
            }

            //不復制.svn文件夾
            if (sSourceDirName.EndsWith(svn))
            {
                return true;
            }

            if (sSourceDirName.Substring(sSourceDirName.Length - 1) != Path.DirectorySeparatorChar.ToString())
            {
                sSourceDirName = sSourceDirName + Path.DirectorySeparatorChar;
            }
            if (sDestDirName.Substring(sDestDirName.Length - 1) != Path.DirectorySeparatorChar.ToString())
            {
                sDestDirName = sDestDirName + Path.DirectorySeparatorChar;
            }

            #region 復制函數
            if (Directory.Exists(sSourceDirName))
            {
                if (!Directory.Exists(sDestDirName))
                {
                    Directory.CreateDirectory(sDestDirName);
                }
                foreach (string item in Directory.GetFiles(sSourceDirName))
                {
                    File.Copy(item, sDestDirName + System.IO.Path.GetFileName(item), true);
                }
                foreach (string item in Directory.GetDirectories(sSourceDirName))
                {
                    CopyDirectory(item, sDestDirName + item.Substring(item.LastIndexOf(Path.DirectorySeparatorChar) + 1));
                }
            }
            return true;
            #endregion
        }


        ///  
        /// 啟動其他的應用程序 
        ///  
        ///應用程序名稱 
        ///應用程序工作目錄 
        ///命令行參數 
        ///窗口風格 
        public static bool StartProcess(string file, string workdirectory, string args, ProcessWindowStyle style)
        {
            try
            {
                Process pMyProcess = new Process();
                ProcessStartInfo pStartInfo = new ProcessStartInfo(file, args);
                pStartInfo.WindowStyle = style;
                pStartInfo.WorkingDirectory = workdirectory;
                pMyProcess.StartInfo = pStartInfo;
                pMyProcess.StartInfo.UseShellExecute = false;
                pMyProcess.Start();
                return true;
            }
            catch (Exception ex)
            {
                //LogAPI.debug(ex);
                return false;
            }
        }

        /// 
        /// 獲得本地計算機名
        /// 
        /// 
        public static string GetComputerName()
        {
            return Dns.GetHostName();
        }

        /// 
        /// 獲得計算機IP地址
        /// 
        /// 
        public static string GetIPAddress()
        {
            try
            {
                string sComputerName;
                sComputerName = GetComputerName();
                string sIpAddress = ;
                IPAddress[] addr = Dns.GetHostAddresses(sComputerName);
                //for (int i = 0; i < addr.Length; i++)
                //{
                //    sIpAddress += addr[i].ToString() +  ;
                //}
                sIpAddress = addr[0].ToString();
                return sIpAddress;
            }
            catch (Exception ep)
            {
                //LogAPI.debug(ep);
                return 127.0.0.1;
            }
        }

        /// 
        /// 描述:創建目錄
        /// 
        /// 
        public static bool CreateFolder(string sFolder)
        {
            //如果臨時文件夾不存在,則創建該文件夾
            if (!Directory.Exists(sFolder))
            {
                Directory.CreateDirectory(sFolder);
            }
            return true;
        }
    }

 

 

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