using log4net; using log4net.Appender; using log4net.Layout; using log4net.Repository.Hierarchy; using System; using System.Collections.Generic; using System.Text; namespace SHARP_CLAS_UI { public abstract class Unit { #region Property public abstract bool IsHomeComplete { get; } public abstract bool IsExist { get; } public abstract bool IsWorkEnd { get; } public abstract bool IsStayPosition { get; } public En_Equipment_Mode UnitMode { get { return _unitMode; } set { _unitMode = value; } } #endregion #region Field public SequenceTimer sequenceChangedTime; protected SequenceTimer homeCheckedTime; protected Equipment equipment; private string _unitName; protected En_Equipment_Mode _unitMode; private ILog _sequenceLog; protected List pauseDisableList = new List(); public bool isHomeComplete; #endregion #region Construct public Unit(Equipment equipment, string unitName = "Unit") { this.equipment = equipment; _unitName = unitName; _unitMode = En_Equipment_Mode.Pause; sequenceChangedTime = new SequenceTimer(); homeCheckedTime = new SequenceTimer(); CreateSequenceLogger(); } #endregion #region Function private void CreateSequenceLogger() { var hierarchy = (Hierarchy)LogManager.GetRepository(); var rollingAppender = new RollingFileAppender(); var layout = new PatternLayout(); hierarchy.Configured = true; rollingAppender.Name = "SequenceRoolingFile"; rollingAppender.LockingModel = new RollingFileAppender.MinimalLock(); rollingAppender.File = $@"D:\Logger\Sequence\"; rollingAppender.AppendToFile = true; rollingAppender.DatePattern = "yyyy\\\\MM\\\\dd\\\\'" + _unitName + ".log'"; rollingAppender.RollingStyle = RollingFileAppender.RollingMode.Composite; rollingAppender.MaxSizeRollBackups = 10; rollingAppender.MaximumFileSize = "200MB"; rollingAppender.StaticLogFileName = false; rollingAppender.Encoding = Encoding.UTF8; rollingAppender.PreserveLogFileNameExtension = true; layout = new PatternLayout("%d{yyyy/MM/dd HH:mm:ss.fff}, %m%n"); layout.ActivateOptions(); rollingAppender.Layout = layout; rollingAppender.ActivateOptions(); hierarchy.GetLogger($"{_unitName}"); ILog log = LogManager.GetLogger($"{_unitName}"); Logger logger = (Logger)log.Logger; logger.Level = log4net.Core.Level.Debug; logger.AddAppender(rollingAppender); _sequenceLog = LogManager.GetLogger($"{_unitName}"); } public void WriteSequenceLog(string message) { if (_sequenceLog != null) _sequenceLog.Debug($"{message}"); } public void ExecuteProcess() { MonitoringStatus(); ExecuteStep(); } public abstract void MonitoringStatus(); public abstract void ExecuteStep(); #endregion } }