using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
namespace Utility.Tools
{
    public static class LogFile
    {
        /// 写LOG到本地文件方法,message="存入信息",path="存储路径"
        public static void SaveLogToFile(string message, string path = "./log/defaultlog.txt")
        {
            FileInfo fi = null;
            StreamWriter logWriter = null;
            try
            {
                int fileLength = 1024 * 1024 * 5;//5MB
                fi = new FileInfo(path);
                if (!fi.Directory.Exists) { fi.Directory.Create(); }
                if (fi.Exists && fi.Length > fileLength)
                {
                    string newpath = path.Insert(path.LastIndexOf('.'), "_" + DateTime.Now.ToString("HHmmss"));
                    File.Move(path, newpath);
                }
                logWriter = new StreamWriter(path, true);
                logWriter.WriteLine(DateTime.Now.ToString() + ">>>" + message);
                logWriter.WriteLine("----->.");
            }
            catch (Exception ex)
            {
                //throw ex;
            }
            finally
            {
                fi = null;
                if (logWriter != null)
                {
                    logWriter.Close();
                    logWriter.Dispose();
                }
            }
        }
        //删除指定日期文件,保留7天
        public static void DeleteLogs(string Path, int days = 7)
        {
            //日志保留时长 单位:天
            
            if (days<7)
            {
                days = 7;
            }
            try
            {
                if (!Directory.Exists(Path))
                {
                    return;
                }
                var now = DateTime.Now;
                foreach (var f in Directory.GetFileSystemEntries(Path).Where(f => File.Exists(f)))
                {
                    var t = File.GetCreationTime(f);
                    var elapsedTicks = now.Ticks - t.Ticks;
                    var elaspsedSpan = new TimeSpan(elapsedTicks);
                    if (elaspsedSpan.TotalDays > days)
                    {
                        File.Delete(f);
                    }
                }
            }
            catch (Exception ex)
            {
            }
        }
    }
}