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<object> pauseDisableList = new List<object>();
|
|
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
|
}
|
}
|