添加上传日志相关的接口
This commit is contained in:
parent
1076bc6ea8
commit
5464aa361a
|
@ -0,0 +1,20 @@
|
|||
using System.ComponentModel;
|
||||
using SQLite;
|
||||
|
||||
namespace MasstransferCommon.Model.Entity;
|
||||
|
||||
[Table("minio_params"), Description("MinIO参数")]
|
||||
public class MinioParams : Entity
|
||||
{
|
||||
[Column("minio_access_key"), Description("Minio AccessKey")]
|
||||
public string MinioAccessKey { get; set; }
|
||||
|
||||
[Column("minio_secret_key"), Description("Minio SecretKey")]
|
||||
public string MinioSecretKey { get; set; }
|
||||
|
||||
[Column("minio_bucket"), Description("Minio Bucket")]
|
||||
public string MinioBucket { get; set; }
|
||||
|
||||
[Column("minio_endpoint"), Description("Minio Endpoint")]
|
||||
public string MinioEndpoint { get; set; }
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
using System.ComponentModel;
|
||||
using SQLite;
|
||||
|
||||
namespace MasstransferCommon.Model.Entity;
|
||||
|
||||
[Table("mqtt_params"), Description("Mqtt连接参数")]
|
||||
public class MqttParams : Entity
|
||||
{
|
||||
[Column("server_address"), Description("服务器地址")]
|
||||
public string ServerAddress { get; set; }
|
||||
|
||||
[Column("port"), Description("端口")] public int Port { get; set; }
|
||||
|
||||
[Column("user_name"), Description("用户名")]
|
||||
public string UserName { get; set; }
|
||||
|
||||
[Column("password"), Description("密码")]
|
||||
public string Password { get; set; }
|
||||
}
|
|
@ -4,12 +4,11 @@ namespace MasstransferCommon.Utils;
|
|||
|
||||
public class TimeUtil
|
||||
{
|
||||
|
||||
public static void Sleep(int milliseconds)
|
||||
{
|
||||
Thread.Sleep(milliseconds);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取当前的时间戳
|
||||
/// </summary>
|
||||
|
@ -32,6 +31,12 @@ public class TimeUtil
|
|||
return dateTime.ToString(format);
|
||||
}
|
||||
|
||||
|
||||
public static string FormatTime(DateTime dateTime, string format = "yyyy-MM-dd HH:mm:ss")
|
||||
{
|
||||
return dateTime.ToString(format);
|
||||
}
|
||||
|
||||
public static string ToTimeSpan(long time)
|
||||
{
|
||||
// 使用TimeSpan.FromMilliseconds来创建TimeSpan对象
|
||||
|
|
|
@ -1,11 +1,63 @@
|
|||
namespace MasstransferExporter.LogExporter;
|
||||
using MasstransferCommon.Model.Entity;
|
||||
using MasstransferCommon.Utils;
|
||||
using MasstransferCommunicate.Minio;
|
||||
using MasstransferInfrastructure.Database.Sqlite;
|
||||
|
||||
namespace MasstransferExporter.LogExporter;
|
||||
|
||||
public class LogFileExporter
|
||||
{
|
||||
public async Task Export(string logFilePath)
|
||||
private static readonly SqliteHelper Helper = SqliteHelper.GetInstance();
|
||||
|
||||
private static readonly string[] Levels = ["debug", "info", "warning", "error"];
|
||||
|
||||
private static MinioHelper _minio = MinioHelper.GetInstance();
|
||||
|
||||
public static async Task ExportLogFile()
|
||||
{
|
||||
|
||||
|
||||
|
||||
var logParams = Helper.Query<LogParams>("select * from log_params limit 1").FirstOrDefault();
|
||||
|
||||
var yesterday = DateTime.Today.AddDays(-1);
|
||||
|
||||
var path =
|
||||
"C:\\workspace\\code_repos\\haiju\\MasstransferHost\\MasstransferDesktop\\bin\\Debug\\net7.0";
|
||||
|
||||
foreach (var level in Levels)
|
||||
{
|
||||
List<FileInfo> files = [];
|
||||
|
||||
var directory = new DirectoryInfo(path + "\\logs");
|
||||
|
||||
GetLogFiles(directory, level, files, yesterday);
|
||||
|
||||
foreach (var file in files)
|
||||
{
|
||||
var fileName = $"sn/{TimeUtil.FormatTime(yesterday, "yyyy-MM-dd")}/{level}/{file.Name}";
|
||||
|
||||
await _minio.UploadFileAsync("log", fileName, file.FullName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 重新加载日志文件列表
|
||||
/// </summary>
|
||||
private static void GetLogFiles(DirectoryInfo directory, string level, List<FileInfo> files, DateTime yesterday)
|
||||
{
|
||||
// 获取文件夹下所有文件的信息
|
||||
var fs = directory.GetFiles();
|
||||
|
||||
var directoryName = directory.Name;
|
||||
|
||||
if (!directoryName.Equals("logs") && !directoryName.Equals(level))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// 遍历所有文件
|
||||
files.AddRange(fs.Where(f => f.CreationTime.Date.Equals(yesterday)));
|
||||
|
||||
// 递归遍历当前目录下的所有文件夹
|
||||
foreach (var subdir in directory.GetDirectories()) GetLogFiles(subdir, level, files, yesterday);
|
||||
}
|
||||
}
|
|
@ -5,6 +5,7 @@
|
|||
<TargetFramework>net7.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<LangVersion>preview</LangVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
@ -15,7 +15,7 @@ class Program
|
|||
|
||||
await MessageQueueHelper.InitConnect(options);
|
||||
|
||||
await OperationLogExporter.ExportOperationLog();
|
||||
await LogFileExporter.ExportLogFile();
|
||||
|
||||
|
||||
Console.WriteLine("按任意键退出");
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
using Minio;
|
||||
using MasstransferCommon.Model.Entity;
|
||||
using MasstransferInfrastructure.Database.Sqlite;
|
||||
using Minio;
|
||||
using Minio.DataModel.Args;
|
||||
|
||||
namespace MasstransferCommunicate.Minio;
|
||||
|
@ -10,7 +12,13 @@ public class MinioHelper
|
|||
{
|
||||
private readonly IMinioClient _client;
|
||||
|
||||
public MinioHelper(string endpoint, string accessKey, string secretKey)
|
||||
private static MinioHelper? _instance;
|
||||
|
||||
private static readonly object Lock = new();
|
||||
|
||||
private static SqliteHelper _sqliteHelper = SqliteHelper.GetInstance();
|
||||
|
||||
private MinioHelper(string endpoint, string accessKey, string secretKey)
|
||||
{
|
||||
_client = new MinioClient()
|
||||
.WithEndpoint(endpoint)
|
||||
|
@ -18,6 +26,16 @@ public class MinioHelper
|
|||
.Build();
|
||||
}
|
||||
|
||||
public static MinioHelper GetInstance()
|
||||
{
|
||||
lock (Lock)
|
||||
{
|
||||
var minio = _sqliteHelper.Query<MinioParams>("select * from minio_params limit 1").FirstOrDefault();
|
||||
_instance ??= new MinioHelper(minio.MinioEndpoint, minio.MinioAccessKey, minio.MinioSecretKey);
|
||||
return _instance;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 判断bucket 是否存在
|
||||
/// </summary>
|
||||
|
|
Loading…
Reference in New Issue