using Microsoft.AspNetCore.Mvc; using System.Text; using System.IO; namespace WIDESEA_WMSServer.Controllers.System { [Route("api/[controller]")] [ApiController] public class Sys_LogController : Controller { [HttpPost, Route("GetLogName"), AllowAnonymous] public WebResponseContent GetLogName() { WebResponseContent content = new WebResponseContent(); try { List data = new List(); DirectoryInfo folder = new DirectoryInfo(AppContext.BaseDirectory + "\\Logs\\"); 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 }); } } return WebResponseContent.Instance.OK(data: data); } catch (Exception ex) { return WebResponseContent.Instance.Error(ex.Message); } } [HttpPost, Route("GetLog"), AllowAnonymous] public WebResponseContent GetLog(string fileName) { WebResponseContent content = new WebResponseContent(); try { List files = new List(); DirectoryInfo folder = new DirectoryInfo(AppContext.BaseDirectory + "\\Logs\\"); 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(); using StreamReader stream = new StreamReader(file.FullName); StringBuilder text = new StringBuilder(); List lines = new List(); int i = 0; while (stream.Peek() >= 0) { var line = stream.ReadLine(); lines.Add(line); } content = WebResponseContent.Instance.OK(data: lines); } else { content = WebResponseContent.Instance.Error($"未找到日志文件,【{fileName}】"); } } catch (Exception ex) { content = WebResponseContent.Instance.Error($"打开日志文件错误,{ex.Message}"); } return content; } } }