using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.IO;
using System.Windows.Forms;

namespace BEMSDataGateway
{
    class LogFileCreate
    {
        public string GetDateTime()
        {
            DateTime NowDate = DateTime.Now;
            return NowDate.ToString("yyyy-MM-dd HH:mm:ss") + ":" + NowDate.Millisecond.ToString("000");
        }

        public void Log(string str)
        {
            string FilePath = Application.StartupPath + @"\Logs\Log" + DateTime.Today.ToString("yyyyMMdd") + ".log";
            string DirPath = Application.StartupPath + @"\Logs";
            string temp;

            DirectoryInfo di = new DirectoryInfo(DirPath);
            FileInfo fi = new FileInfo(FilePath);

            if (di.Exists != true) //로그 폴더 없을때, 로그 폴더 생성
            {
                Directory.CreateDirectory(DirPath);
            }
            if (fi.Exists != true) //로그 파일 없을때, 로그 파일 생성
            {
                using (StreamWriter sw = new StreamWriter(FilePath))
                {
                    temp = string.Format("[{0}] : {1}", GetDateTime(), str);
                    sw.WriteLine(temp);
                    sw.Close();
                    sw.Dispose();
                }
            }
            else
            {
                using (StreamWriter sw = File.AppendText(FilePath)) // 로그 파일 있으면, AppendText
                {
                    temp = string.Format("[{0}] : {1}", GetDateTime(), str);
                    sw.WriteLine(temp);
                    sw.Close();
                    sw.Dispose();
                }
            }
            DeleteServiceLogByDay(10);   //현재일로부터 10일 이전 로그 파일 삭제
        }
        internal void DeleteServiceLogByDay(int keepDay)
        {
            try
            {
                string DirPath = Application.StartupPath + @"\Logs";
                DirectoryInfo di = new DirectoryInfo(DirPath);

                    foreach (FileInfo file in di.GetFiles())
                    {
                        if (file.Extension == ".log")
                        {
                            if (file.CreationTime < DateTime.Now.AddDays(-(keepDay)))
                            {
                                file.Delete();
                            }
                        }
                    }              
                di = null;
            }
            catch (Exception ex)
            {
                if (Form1.Enable_EnglishMode)//영어
                {
                    Log("[Log.cs] Errors in log file deletion : " + ex);
                }
                else//한글
                {
                    Log("[Log.cs] 로그 파일 삭제 에러 발생 : " + ex);
                }                
            }
        }
    }
}
