using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//配置config文件名
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net_iWare.config", Watch = true)]
namespace iWareCommon.Utils
{
    /// 
    /// 日志等级
    /// 
    enum LogLevel
    {
        Error,
        Debug,
        Warning,
        Info
    }
   
    /// 
    /// 日志记录服务
    /// 
    class C_LogWriter
    {
        /// 
        /// 日志接口
        /// 
        private log4net.ILog m_Log;
        /// 
        /// 初始化log4net对象
        /// 
        /// 日志类型
        /// 后缀
        public void Init(LogType _LogType, string suffix)
        {
            string s = _LogType.ToString() + suffix;
            m_Log = log4net.LogManager.GetLogger(s);
        }
        /// 
        /// 输出错误级别日志
        /// 
        /// 输出的消息
        public void Error(string message, Exception ex)
        {
            //记录日志
            WriteLog(LogLevel.Error, message, ex);
        }
        /// 
        /// 输出警告级别日志
        /// 
        /// 输出的消息
        public void Warning(string message)
        {
            //记录日志
            WriteLog(LogLevel.Warning, message);
        }
        /// 
        /// 输出信息级别日志
        /// 
        /// 输出的消息
        public void Info(string message)
        {
            //记录日志
            WriteLog(LogLevel.Info, message);
        }
        /// 
        /// 输出调试级别日志
        /// 
        /// 输出的消息
        public void Debug(string message)
        {
            //记录日志
            WriteLog(LogLevel.Debug, message);
        }
        /// 
        /// 记录系统日志
        /// 
        /// 日志级别
        /// 输出的消息
        private void WriteLog(LogLevel logLevel, string message, Exception ex = null)
        {
            switch (logLevel)
            {
                case LogLevel.Debug:
                    m_Log.Debug(message);
                    break;
                case LogLevel.Error:
                    m_Log.Error(message, ex);
                    break;
                case LogLevel.Info:
                    m_Log.Info(message);
                    break;
                case LogLevel.Warning:
                    m_Log.Warn(message);
                    break;
            }
        }
    }
}