From b7f53ba61fbc1844d7b92ff852762b140d46ab54 Mon Sep 17 00:00:00 2001
From: huanghongfeng <huanghongfeng@hnkhzn.com>
Date: 星期一, 23 六月 2025 19:58:16 +0800
Subject: [PATCH] 最新
---
代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/ISys_LogService.cs | 226 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 225 insertions(+), 1 deletions(-)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/ISys_LogService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/ISys_LogService.cs"
index 166d420..516fce3 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/ISys_LogService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_ISystemServices/ISys_LogService.cs"
@@ -1,14 +1,238 @@
-锘縰sing System;
+锘縰sing Microsoft.AspNetCore.Mvc;
+using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseServices;
using WIDESEAWCS_Model.Models;
namespace WIDESEAWCS_ISystemServices
{
+ #region 瀹炰綋绫�
+ public class DirInfo
+ {
+ /// <summary>
+ /// 褰撳墠璺緞
+ /// </summary>
+ public string dirPath { get; set; }
+
+ /// <summary>
+ /// 褰撳墠鍚嶇О
+ /// </summary>
+ public string dirName { get; set; }
+
+ /// <summary>
+ /// 瀛愭枃浠�
+ /// </summary>
+ public List<FileDataInfo> files { get; set; }
+
+ /// <summary>
+ /// 瀛愭枃浠跺す
+ /// </summary>
+ public List<DirInfo> dirs { get; set; }
+ }
+
+ public class FileDataInfo
+ {
+ public string filePath { get; set; }
+
+ public string fileName { get; set; }
+
+ public long fileSize { get; set; }
+ }
+
+ public class GetLogParm
+ {
+ /// <summary>
+ /// 鏂囦欢鍦板潃
+ /// </summary>
+ public string path;
+
+ /// <summary>
+ /// 璇诲彇杩涘害
+ /// </summary>
+ public float percent;
+
+ /// <summary>
+ /// 鏈�澶ц鍙栧ぇ灏�
+ /// </summary>
+ public double maxsize_KB = 20;
+
+ /// <summary>
+ /// 褰撳墠璧峰浣嶇疆
+ /// </summary>
+ public long topStartPos = 0;
+ }
+ #endregion
public interface ISys_LogService : IService<Sys_Log>
{
+ /// <summary>
+ /// 閫掑綊鑾峰彇鏂囦欢淇℃伅
+ /// </summary>
+ /// <param name="dirPath"></param>
+ /// <returns></returns>
+ private DirInfo GetDirInfo(string dirPath)
+ {
+ //褰撳墠鏂囦欢澶�
+ var dirInfo = new DirInfo();
+ dirInfo.dirName = Path.GetFileName(dirPath);
+
+ //瀛愭枃浠�
+ List<FileDataInfo> files = new List<FileDataInfo>();
+ foreach (var file in Directory.GetFiles(dirPath))
+ {
+ files.Add(new FileDataInfo()
+ {
+ filePath = file,
+ fileName = Path.GetFileName(file)
+ });
+ }
+
+ //瀛愭枃浠跺す
+ var dirs = Directory.GetDirectories(dirPath);
+ dirInfo.dirs = new List<DirInfo>();
+ foreach (var dir in dirs)
+ {
+ dirInfo.dirs.Add(GetDirInfo(dir));
+ }
+
+ //瀛愭枃浠跺す锛屼笌瀛愮洰褰曞悎骞�
+ foreach (var file in files)
+ {
+ dirInfo.dirs.Add(new DirInfo() { dirPath = file.filePath, dirName = file.fileName });
+ }
+ return dirInfo;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏃ュ織鏂囦欢鍒楄〃
+ /// </summary>
+ /// <returns></returns>
+ public WebResponseContent GetLogList()
+ {
+ WebResponseContent content = new WebResponseContent();
+ string path = System.Environment.CurrentDirectory + "/log";
+ if (!System.IO.Directory.Exists(path))
+ {
+ return content.Error("鏆傛棤鏃ュ織鏂囦欢");
+ }
+
+ content.Data = GetDirInfo(path);
+ content.OK();
+ return content;
+ }
+
+ /// <summary>
+ /// 鑾峰彇鏂囦欢鍐呭
+ /// </summary>
+ /// <param name="parm"></param>
+ /// <returns></returns>
+ public WebResponseContent GetLogData(GetLogParm parm)
+ {
+ WebResponseContent content = new WebResponseContent();
+ string res = "";
+ //鏄惁璇诲彇鍒版渶鍚�
+ bool isEnd = false;
+ long startIndex = 0;
+ //鏂囦欢澶у皬
+ long len = 0;
+ try
+ {
+ if (!System.IO.File.Exists(parm.path))
+ {
+ throw new Exception($"鏂囦欢{parm.path}涓嶅瓨鍦紒");
+ }
+ using (FileStream fs = new FileStream(parm.path, FileMode.Open, FileAccess.Read, FileShare.Read))
+ {
+ //鏈�澶ц鍙栧ぇ灏�
+ int maxsize = (int)(1024 * parm.maxsize_KB);
+ len = fs.Length;
+ long startPos = (long)(len * (parm.percent / 100));//璧峰浣嶇疆
+ long readLen = len - startPos;//璇诲彇闀垮害
+
+ //鍚戝墠鍔犺浇
+ if (parm.topStartPos != 0)
+ {
+ startPos = parm.topStartPos - maxsize;
+ if (startPos < 0)
+ {
+ //宸茶鍒拌捣濮嬩綅
+ startPos = 0;
+ readLen = parm.topStartPos;
+ }
+ else
+ {
+ readLen = maxsize;
+ }
+ }
+ else
+ {
+ //璇诲彇澶у皬鏄惁瓒呭嚭鏈�澶ч暱搴�
+ if (readLen > maxsize)
+ {
+ readLen = maxsize;
+ }
+ else
+ {
+ isEnd = true;
+ }
+ }
+
+ //鍔犺浇100%锛屾寜鏈�澶у唴瀹硅鍙�
+ if (parm.percent == 100)
+ {
+ if (len < maxsize)
+ {
+ startPos = 0;
+ readLen = len;
+ }
+ else
+ {
+ startPos = len - maxsize;
+ readLen = maxsize;
+ }
+ }
+
+ fs.Seek(startPos, SeekOrigin.Begin);
+ var buffer = new byte[readLen];
+ fs.Read(buffer, 0, (int)readLen);
+
+ startIndex = startPos;
+ if (startPos != 0 && (parm.percent != 0 || parm.topStartPos != 0))
+ {
+ //涓嶆槸浠庡ご鍔犺浇锛屽垹闄ゅ彲鑳戒笉瀹屾暣鐨勭涓�琛�
+ int skipCount = 0;
+ for (int i = 0; i < buffer.Length; i++)
+ {
+ if (buffer[i] == 10)
+ {
+ skipCount = i;
+ break;
+ }
+ }
+ if (skipCount != 0)
+ {
+ //鍘绘帀鎹㈣
+ skipCount++;
+ //涓嬫璇诲彇鍓嶅欢
+ startIndex += skipCount;
+ }
+ res = Encoding.UTF8.GetString(buffer.Skip(skipCount).ToArray());
+ }
+ else
+ {
+ res = Encoding.UTF8.GetString(buffer);
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ return content.Error(ex.Message);
+ }
+ return content.OK(data: new { content = res, isEnd, startIndex, len });
+ }
+
}
}
--
Gitblit v1.9.3