using log4net;
using log4net.Appender;
using log4net.Layout;
using log4net.Repository.Hierarchy;
using System;
using System.Text;
using System.Threading.Tasks;
namespace SHARP_CLAS_UI
{
public abstract class Base_Unit
{
#region Define
private ILog Seq_Log;
public void Write_Sequence_Log(string message)
{
if (Seq_Log != null) Seq_Log.Debug($"{message}");
}
#endregion
#region Property
public abstract bool Is_Home_Complete
{
get;
}
public abstract bool Is_Exist
{
get;
}
public En_Equipment_Mode UnitMode
{
get
{
return _unitMode;
}
set
{
_unitMode = value;
}
}
#endregion
#region Field
private string Unit_Name = "";
private En_Equipment_Mode _unitMode;
public DateTime sequenceChangedTime;
#endregion
#region Construct
public Base_Unit(string Unit_Name)
{
this.Unit_Name = Unit_Name;
_unitMode = En_Equipment_Mode.Pause;
sequenceChangedTime = DateTime.Now;
Create_Sequence_logger();
}
#endregion
#region Function
private void Create_Sequence_logger()
{
Hierarchy hierarchy = (Hierarchy)LogManager.GetRepository();
RollingFileAppender rollingAppender = new RollingFileAppender();
PatternLayout layout = new PatternLayout();
hierarchy.Configured = true;
rollingAppender.Name = "Seq_RoolingFile";
rollingAppender.LockingModel = new RollingFileAppender.MinimalLock();
rollingAppender.File = $@"D:\Logger\Sequence\{Unit_Name}\";
rollingAppender.AppendToFile = true;
rollingAppender.DatePattern = "yyyy\\\\MM\\\\'"+ Unit_Name + "'_dd'.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($"Seq_{Unit_Name}");
ILog log = LogManager.GetLogger($"Seq_{Unit_Name}");
Logger l = (Logger)log.Logger;
l.Level = log4net.Core.Level.Debug;
l.AddAppender(rollingAppender);
Seq_Log = LogManager.GetLogger($"Seq_{Unit_Name}");
}
///
/// 상태 확인
///
public abstract void Status_Working();
///
/// Sequence 동작
///
public abstract void Sequence_Working();
#endregion
}
}