using System.Collections.Generic;
|
using System.IO;
|
using System.Text;
|
using System;
|
using WIDESEA_Core.BaseProvider;
|
using WIDESEA_Core.Extensions.AutofacManager;
|
using WIDESEA_Core.Utilities;
|
using WIDESEA_Entity.DomainModels;
|
using WIDESEA_Services.IRepositories;
|
using WIDESEA_Services.IServices;
|
using System.Linq;
|
|
namespace WIDESEA_Services.Services
|
{
|
public partial class Sys_LogService : ServiceBase<Sys_Log, ISys_LogRepository>, ISys_LogService, IDependency
|
{
|
public Sys_LogService(ISys_LogRepository repository)
|
: base(repository)
|
{
|
Init(repository);
|
}
|
public static ISys_LogService Instance
|
{
|
get { return AutofacContainerModule.GetService<ISys_LogService>(); }
|
}
|
public WebResponseContent GetLogName()
|
{
|
WebResponseContent content = new WebResponseContent();
|
try
|
{
|
List<object> data = new List<object>();
|
DirectoryInfo folder = new DirectoryInfo(AppContext.BaseDirectory + "\\log\\");
|
DirectoryInfo[] firstDirectoryInfos = folder.GetDirectories().OrderByDescending(x => x.CreationTime).ToArray();
|
int k = 2020;
|
for (int i = 0; i < firstDirectoryInfos.Length; i++)
|
{
|
if (firstDirectoryInfos[i].Name != "Info")
|
{
|
FileInfo[] nextFileInfos = firstDirectoryInfos[i].GetFiles();
|
List<object> values = new List<object>();
|
for (int j = 0; j < nextFileInfos.Length; j++)
|
{
|
values.Add(new { label = nextFileInfos[j].Name, id = k, hidden = true, fatherNode = firstDirectoryInfos[i].Name });
|
k++;
|
}
|
data.Add(new { label = firstDirectoryInfos[i].Name, children = values, id = i, hidden = false });
|
}
|
else
|
{
|
DirectoryInfo[] infoDirector = firstDirectoryInfos[i].GetDirectories();
|
for (int l = 0; l < infoDirector.Length; l++)
|
{
|
FileInfo[] nextFileInfos = infoDirector[l].GetFiles();
|
List<object> values = new List<object>();
|
for (int j = 0; j < nextFileInfos.Length; j++)
|
{
|
values.Add(new { label = "info" + nextFileInfos[j].Name, id = k, hidden = true, fatherNode = infoDirector[l].Name });
|
k++;
|
}
|
data.Add(new { label = "info" + infoDirector[l].Name, children = values, id = l + i, hidden = false });
|
}
|
}
|
}
|
|
return WebResponseContent.Instance.OK(data: data);
|
}
|
catch (Exception ex)
|
{
|
return WebResponseContent.Instance.Error(ex.Message);
|
}
|
}
|
|
public WebResponseContent GetLog(SaveModel saveModel)
|
{
|
WebResponseContent content = new WebResponseContent();
|
try
|
{
|
string fileName = saveModel.MainData["fileName"].ToString();
|
List<FileInfo> files = new List<FileInfo>();
|
DirectoryInfo folder = new DirectoryInfo(AppContext.BaseDirectory + "\\log\\");
|
if (fileName.Contains("info"))
|
{
|
fileName = fileName.Replace("info", "");
|
folder = new DirectoryInfo(AppContext.BaseDirectory + "\\log\\Info\\");
|
}
|
|
|
DirectoryInfo[] firstDirectoryInfos = folder.GetDirectories();
|
for (int i = 0; i < firstDirectoryInfos.Length; i++)
|
{
|
FileInfo[] nextFileInfos = firstDirectoryInfos[i].GetFiles();
|
files.AddRange(nextFileInfos);
|
}
|
if (files.Count > 0)
|
{
|
FileInfo file = files.Where(x => x.Name == fileName).FirstOrDefault();
|
//file.Length
|
using StreamReader stream = new StreamReader(file.FullName);
|
//StringReader sr = new StringReader(stream.ReadToEnd());
|
StringBuilder text = new StringBuilder();
|
List<string> lines = new List<string>();
|
int i = 0;
|
while (stream.Peek() >= 0)
|
{
|
//text.AppendLine(Environment.NewLine);
|
var line = stream.ReadLine();
|
lines.Add(line);
|
//text.Insert(i, /*string.IsNullOrEmpty(line) ? line : */line + "\r\n");
|
////text.Append("\\r\\n");
|
////text.Append(line + Environment.NewLine);
|
//i++;
|
}
|
|
//string text = stream.ReadToEnd();
|
content = WebResponseContent.Instance.OK(data: lines);
|
}
|
else
|
{
|
content = WebResponseContent.Instance.Error($"未找到日志文件,【{fileName}】");
|
}
|
}
|
catch (Exception ex)
|
{
|
content = WebResponseContent.Instance.Error($"打开日志文件错误,{ex.Message}");
|
}
|
return content;
|
}
|
}
|
}
|