LogBean.cs 1.8 KB
using log4net;
using System;

namespace AGVLib
{
    internal class LogBean
    {
        public delegate void ShowMsg(string msg);
        public event ShowMsg ShowDebug;
        public event ShowMsg ShowInfo;
        public event ShowMsg ShowWarn;
        public event ShowMsg ShowError;

        readonly ILog log;
        string debug = "", info = "", warn = "", error = "";

        public LogBean(string logName)
        {
            this.log = LogManager.GetLogger(logName);
            LogUtil.AddLogMap(logName, this);
        }
        #region Main log
        bool check(string old,string newstr)
        {
            if(old!=null && old.Equals(newstr))
                return true;
            return false;
        }
        public void Debug(string msg)
        {
            ShowDebug?.Invoke(msg);
            if(check(debug,msg))
                return;
            debug = msg;
            log.Debug(debug);
        }
        public void Info(string msg)
        {
            ShowInfo?.Invoke(msg);
            if (check(info, msg))
                return;
            info = msg;
            log.Info(info);
        }
        public void Warn(string msg)
        {
            ShowWarn?.Invoke(msg);
            if (check(warn, msg))
                return;
            warn = msg;
            log.Warn(warn);
        }
        public void Error(string msg, Exception exception = null)
        {
            ShowError?.Invoke(msg);
            if (exception == null)
            {
                if (check(error, msg))
                    return;
                error = msg;
                log.Error(error);
            }
            else
            {
                if (check(error, msg))
                    return;
                error = msg;
                log.Error(error, exception);
            }

        }
        #endregion

    }
}