using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using log4net;
using log4net.Config;
using System.IO;
namespace Logging
{
public class Logger
{
private static readonly object locker = new object();
private ILog _Logger = null;
public readonly ILog ll
{
get { return _Logger; }
}
public Logger(string log)
{
_Logger = log4net.LogManager.GetLogger(log);
}
#region Log Append Func
///
/// 치명적 장애 발생시 Log Append
///
///
public void appendFatalLog(string message)
{
lock (locker)
{
DeleteLogFile();
if (_Logger.IsFatalEnabled)
_Logger.Fatal(message);
}
}
///
/// 일반적 장애 발생시 Log Append
///
///
public void appendErrorLog(string message)
{
lock (locker)
{
DeleteLogFile();
if (_Logger.IsErrorEnabled)
_Logger.Error(message);
}
}
///
/// 경고 Log Append
///
///
public void appendWarnLog(string message)
{
lock (locker)
{
DeleteLogFile();
if (_Logger.IsWarnEnabled)
_Logger.Warn(message);
}
}
///
/// 정보 Log Append
///
///
public void appendInfoLog(string message)
{
lock (locker)
{
DeleteLogFile();
if (_Logger.IsInfoEnabled)
_Logger.Info(message);
}
}
///
/// 디버그 TRACE용 Log Append
///
///
public void appendDebugLog(string message)
{
lock (locker)
{
DeleteLogFile();
if (_Logger.IsDebugEnabled)
_Logger.Debug(message);
}
}
#endregion
public void DeleteLogFile()
{
try
{
string folderPath = @"C:\Log\";
DirectoryInfo dirInfo = new DirectoryInfo(folderPath);
if (dirInfo != null)
{
foreach (FileInfo file in dirInfo.GetFiles())
{
if (file.Extension != ".log")
continue;
if (file.CreationTime < DateTime.Now.AddDays(-10))
file.Delete();
}
}
dirInfo = null;
}
catch (Exception ex)
{
appendErrorLog(string.Format("Log File Delete Error\r\nMessage : {0}\r\nStack Trace :\r\n{1}", ex.Message, ex.StackTrace));
}
}
}
public class LogManager
{
private static LogManager _instance;
private static readonly object locker = new object();
public Logger iLog_Common = null;
public Logger iLog_Socket = null;
public Logger iLog_Database = null;
public static LogManager Instance()
{
lock (locker)
{
if (_instance == null)
_instance = new LogManager();
return _instance;
}
}
public LogManager()
{
string strDirPath;
strDirPath = @"C:\Log";
DirectoryInfo dirInfo = new DirectoryInfo(strDirPath);
if (dirInfo.Exists == false)
{
if (dirInfo != null)
dirInfo.Create();
}
string AppPath = AppDomain.CurrentDomain.BaseDirectory;
XmlConfigurator.Configure(new System.IO.FileInfo(AppPath + @"bin\Logconfig.xml"));
iLog_Common = new Logger("Common");
iLog_Socket = new Logger("Socket");
iLog_Database = new Logger("Database");
}
}
}