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, ISys_LogService, IDependency { public Sys_LogService(ISys_LogRepository repository) : base(repository) { Init(repository); } public static ISys_LogService Instance { get { return AutofacContainerModule.GetService(); } } public WebResponseContent GetLogName() { WebResponseContent content = new WebResponseContent(); try { List data = new List(); 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 values = new List(); 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 values = new List(); 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 files = new List(); 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 lines = new List(); 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; } } }