245 lines
9.0 KiB
C#
245 lines
9.0 KiB
C#
![]() |
using Epost.Common;
|
|||
|
using Epost.DAL;
|
|||
|
using Epost.Model;
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.IO;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Threading.Tasks;
|
|||
|
using System.Xml;
|
|||
|
|
|||
|
namespace Epost.BLL
|
|||
|
{
|
|||
|
public class LogXmlBLL
|
|||
|
{
|
|||
|
DB db = new DB();
|
|||
|
List<Log4NetModel> list = new List<Log4NetModel>();
|
|||
|
#region 查看日志信息
|
|||
|
public List<Log4NetModel> Log4NetData()
|
|||
|
{
|
|||
|
list.Clear();
|
|||
|
Log4NetModel model = new Log4NetModel();
|
|||
|
model.Name = "日志文件";
|
|||
|
//【改变】
|
|||
|
string directoryPath = System.AppDomain.CurrentDomain.BaseDirectory + "\\Log\\System_log";
|
|||
|
//string directoryPath = db.path_log4;
|
|||
|
long len = GetDirectoryLength(directoryPath);
|
|||
|
string length = CountSize(len);
|
|||
|
model.Space = length;
|
|||
|
list.Add(model);
|
|||
|
return list;
|
|||
|
|
|||
|
}
|
|||
|
#endregion
|
|||
|
#region 获取文件并且转化文件大小
|
|||
|
public static long GetDirectoryLength(string dirPath)
|
|||
|
{
|
|||
|
long len = 0;
|
|||
|
//判断该路径是否存在(是否为文件夹)
|
|||
|
if (!Directory.Exists(dirPath))
|
|||
|
{
|
|||
|
//查询文件的大小
|
|||
|
len = FileSize(dirPath);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//定义一个DirectoryInfo对象
|
|||
|
DirectoryInfo di = new DirectoryInfo(dirPath);
|
|||
|
|
|||
|
//通过GetFiles方法,获取di目录中的所有文件的大小
|
|||
|
foreach (FileInfo fi in di.GetFiles())
|
|||
|
{
|
|||
|
len += fi.Length;
|
|||
|
}
|
|||
|
//获取di中所有的文件夹,并存到一个新的对象数组中,以进行递归
|
|||
|
DirectoryInfo[] dis = di.GetDirectories();
|
|||
|
if (dis.Length > 0)
|
|||
|
{
|
|||
|
for (int i = 0; i < dis.Length; i++)
|
|||
|
{
|
|||
|
len += GetDirectoryLength(dis[i].FullName);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
return len;
|
|||
|
}
|
|||
|
public static long FileSize(string filePath)
|
|||
|
{
|
|||
|
//定义一个FileInfo对象,是指与filePath所指向的文件相关联,以获取其大小
|
|||
|
FileInfo fileInfo = new FileInfo(filePath);
|
|||
|
return fileInfo.Length;
|
|||
|
}
|
|||
|
|
|||
|
public static string CountSize(long Size)
|
|||
|
{
|
|||
|
string m_strSize = "";
|
|||
|
long FactSize = 0;
|
|||
|
FactSize = Size;
|
|||
|
if (FactSize < 1024.00)
|
|||
|
m_strSize = FactSize.ToString("F2") + " Byte";
|
|||
|
else if (FactSize >= 1024.00 && FactSize < 1048576)
|
|||
|
m_strSize = (FactSize / 1024.00).ToString("F2") + " K";
|
|||
|
else if (FactSize >= 1048576 && FactSize < 1073741824)
|
|||
|
m_strSize = (FactSize / 1024.00 / 1024.00).ToString("F2") + " M";
|
|||
|
else if (FactSize >= 1073741824)
|
|||
|
m_strSize = (FactSize / 1024.00 / 1024.00 / 1024.00).ToString("F2") + " G";
|
|||
|
return m_strSize;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 删除日志记录
|
|||
|
public bool DeleteLog4Net()
|
|||
|
{
|
|||
|
string directoryPath = System.AppDomain.CurrentDomain.BaseDirectory + "\\Log\\System_log";
|
|||
|
DirectoryInfo dir = new DirectoryInfo(directoryPath);
|
|||
|
FileSystemInfo[] fileinfo = dir.GetFileSystemInfos(); //返回目录中所有文件和子目录
|
|||
|
foreach (FileSystemInfo i in fileinfo)
|
|||
|
{
|
|||
|
if (i is DirectoryInfo) //判断是否文件夹
|
|||
|
{
|
|||
|
DirectoryInfo subdir = new DirectoryInfo(i.FullName);
|
|||
|
subdir.Delete(true); //删除子目录和文件
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
File.Delete(i.FullName); //删除指定文件
|
|||
|
}
|
|||
|
//return true;
|
|||
|
}
|
|||
|
//删除日志记录
|
|||
|
if (true == true)
|
|||
|
{
|
|||
|
//记录日志
|
|||
|
|
|||
|
ErrorLogBLL logBLL = new ErrorLogBLL();
|
|||
|
ErrorLogModel error_model = new ErrorLogModel();
|
|||
|
error_model.Type = "3";
|
|||
|
error_model.Remark = "删除日志(包括系统设置自动删除):日志目录" + directoryPath;
|
|||
|
logBLL.InsertErrorLog(error_model);
|
|||
|
}
|
|||
|
return true;
|
|||
|
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 加载日志文件的xml(定期删除)
|
|||
|
public bool LoadLog4XML()
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
//【改变】
|
|||
|
string sql_xml = System.AppDomain.CurrentDomain.BaseDirectory + "\\Log\\delog4.xml";
|
|||
|
//string sql_xml = @db.path_delog4;
|
|||
|
XmlDocument xmldoc = new XmlDocument();
|
|||
|
string datatime = DateTime.Now.ToString();
|
|||
|
XmlNode node = xmldoc.CreateXmlDeclaration("1.0", "utf-8", "");
|
|||
|
xmldoc.AppendChild(node);
|
|||
|
if (!File.Exists(sql_xml))
|
|||
|
{
|
|||
|
XmlElement root = xmldoc.CreateElement("Delete");
|
|||
|
xmldoc.AppendChild(root);
|
|||
|
//子节点
|
|||
|
XmlElement delete = xmldoc.CreateElement("delete");
|
|||
|
root.AppendChild(delete);
|
|||
|
//一级属性
|
|||
|
XmlAttribute day = xmldoc.CreateAttribute("days");
|
|||
|
delete.Attributes.Append(day);
|
|||
|
day.Value = Convert.ToString(30);
|
|||
|
delete.InnerText = datatime;//当前时间
|
|||
|
xmldoc.Save(sql_xml);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
xmldoc.Load(sql_xml);
|
|||
|
XmlNode orderid2 = xmldoc.SelectSingleNode("Delete");
|
|||
|
var list = orderid2.ChildNodes;
|
|||
|
for (int i = 0; i < list.Count; i++)
|
|||
|
{
|
|||
|
if (list[i].Attributes["days"].Name == "days")
|
|||
|
{
|
|||
|
string days = list[i].Attributes["days"].Value;
|
|||
|
string innerday = list[i].Attributes["days"].Value;
|
|||
|
DateTime dtt = Convert.ToDateTime(innerday);
|
|||
|
dtt = dtt.AddDays(Convert.ToInt32(days));
|
|||
|
DateTime dtt2 = Convert.ToDateTime(datatime);
|
|||
|
if (dtt.CompareTo(dtt2) >= 0)
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
else if (dtt.CompareTo(dtt2) < 0)
|
|||
|
{
|
|||
|
//执行删除任务的操作
|
|||
|
DeleteLog4Net();//删除数据中的加载日志历史数据
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
LogHelper.WriteLogInfo("加载日志文件定期删除异常:" + ex.ToString());
|
|||
|
|
|||
|
}
|
|||
|
//对比数据
|
|||
|
return true;
|
|||
|
}
|
|||
|
#endregion
|
|||
|
|
|||
|
#region 创建日志xml
|
|||
|
public bool Log4XML(int days)
|
|||
|
{
|
|||
|
//保存数据到xml格式中
|
|||
|
string datatime = DateTime.Now.ToString();
|
|||
|
//主目录
|
|||
|
string sql_xml = System.AppDomain.CurrentDomain.BaseDirectory + "\\Log\\delog4.xml";
|
|||
|
//string sql_xml = @db.path_delog4;
|
|||
|
//public static string sqlcon = ConfigurationManager.ConnectionStrings["path"].ToString();
|
|||
|
XmlDocument xmldoc = new XmlDocument();
|
|||
|
XmlNode node = xmldoc.CreateXmlDeclaration("1.0", "utf-8", "");
|
|||
|
xmldoc.AppendChild(node);
|
|||
|
|
|||
|
if (!File.Exists(sql_xml))
|
|||
|
{
|
|||
|
//根节点
|
|||
|
XmlElement root = xmldoc.CreateElement("Delete");
|
|||
|
xmldoc.AppendChild(root);
|
|||
|
//子节点
|
|||
|
XmlElement delete = xmldoc.CreateElement("delete");
|
|||
|
root.AppendChild(delete);
|
|||
|
//一级属性
|
|||
|
XmlAttribute day = xmldoc.CreateAttribute("days");
|
|||
|
delete.Attributes.Append(day);
|
|||
|
day.Value = Convert.ToString(days);
|
|||
|
delete.InnerText = datatime;//当前时间
|
|||
|
xmldoc.Save(sql_xml);
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
xmldoc.Load(sql_xml);
|
|||
|
XmlNode orderid2 = xmldoc.SelectSingleNode("Delete");
|
|||
|
//获取属性
|
|||
|
var list = orderid2.ChildNodes;
|
|||
|
for (int i = 0; i < list.Count; i++)
|
|||
|
{
|
|||
|
if (list[i].Attributes["days"].Name == "days")
|
|||
|
{
|
|||
|
list[i].Attributes["days"].Value = Convert.ToString(days);
|
|||
|
list[i].InnerText = datatime;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
xmldoc.Save(sql_xml);
|
|||
|
|
|||
|
return true;
|
|||
|
}
|
|||
|
}
|
|||
|
#endregion
|
|||
|
}
|
|||
|
|