Sfoglia il codice sorgente

1.日志组件支持自定义事件;
2.Redis组件增加对象池获取实例

懒得勤快 7 anni fa
parent
commit
f7919901f1

+ 6 - 4
Masuit.Tools.Core/Logging/LogManager.cs

@@ -17,11 +17,11 @@ namespace Masuit.Tools.Logging
     {
         static readonly ConcurrentQueue<Tuple<string, string>> LogQueue = new ConcurrentQueue<Tuple<string, string>>();
 
-        private static readonly Task WriteTask;
+        public static event Action<string> Event;
 
         static LogManager()
         {
-            WriteTask = new Task(obj =>
+            var writeTask = new Task(obj =>
             {
                 while (true)
                 {
@@ -30,6 +30,7 @@ namespace Masuit.Tools.Logging
                     foreach (var logItem in LogQueue)
                     {
                         string logPath = logItem.Item1;
+                        Event?.Invoke(logItem.Item2);
                         string logMergeContent = String.Concat(logItem.Item2, Environment.NewLine, "----------------------------------------------------------------------------------------------------------------------", Environment.NewLine);
                         string[] logArr = temp.FirstOrDefault(d => d[0].Equals(logPath));
                         if (logArr != null)
@@ -49,7 +50,7 @@ namespace Masuit.Tools.Logging
                     }
                 }
             }, null, TaskCreationOptions.LongRunning);
-            WriteTask.Start();
+            writeTask.Start();
         }
 
         private static AutoResetEvent Pause => new AutoResetEvent(false);
@@ -57,7 +58,7 @@ namespace Masuit.Tools.Logging
         /// <summary>
         /// 日志存放目录,默认日志放在当前应用程序运行目录下的logs文件夹中
         /// </summary>
-        public static string LogDirectory { get; set; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "logs");
+        public static string LogDirectory { get; set; } = Path.Combine(AppContext.BaseDirectory, "Logs");
 
         /// <summary>
         /// 写入Info级别的日志
@@ -215,6 +216,7 @@ namespace Masuit.Tools.Logging
                 }
                 using (StreamWriter sw = File.AppendText(logPath))
                 {
+                    Event(logContent);
                     sw.Write(logContent);
                 }
             }

+ 1 - 1
Masuit.Tools.Core/Masuit.Tools.Core.csproj

@@ -2,7 +2,7 @@
 
   <PropertyGroup>
     <TargetFramework>netcoreapp2.0</TargetFramework>
-    <Version>1.9.0</Version>
+    <Version>1.9.1</Version>
     <Authors>懒得勤快</Authors>
     <Company>masuit.com</Company>
     <Description>包含一些常用的操作类,大都是静态类,加密解密,反射操作,硬件信息,字符串扩展方法,日期时间扩展操作,大文件拷贝,图像裁剪,html处理,验证码、NoSql等常用封装。

+ 20 - 0
Masuit.Tools.Core/NoSQL/RedisHelper.cs

@@ -40,6 +40,26 @@ namespace Masuit.Tools.Core.NoSQL
             _conn = string.IsNullOrWhiteSpace(readWriteHosts) ? RedisConnectionHelp.Instance : RedisConnectionHelp.GetConnectionMultiplexer(readWriteHosts);
         }
 
+        /// <summary>
+        /// 从对象池获取默认实例
+        /// </summary>
+        /// <param name="db">数据库的编号</param>
+        /// <returns></returns>
+        public static RedisHelper GetInstance(int db = 0)
+        {
+            return new RedisHelper(db);
+        }
+
+        /// <summary>
+        /// 从对象池获取默认实例
+        /// </summary>
+        /// <param name="conn">Redis服务器连接字符串,格式:127.0.0.1:6379,allowadmin=true</param>
+        /// <param name="db">数据库的编号</param>
+        /// <returns></returns>
+        public static RedisHelper GetInstance(string conn = "127.0.0.1:6379,allowadmin=true", int db = 0)
+        {
+            return new RedisHelper(db, conn);
+        }
         #endregion 构造函数
 
         #region String

+ 9 - 6
Masuit.Tools/Logging/LogManager.cs

@@ -17,11 +17,10 @@ namespace Masuit.Tools.Logging
     {
         static readonly ConcurrentQueue<Tuple<string, string>> LogQueue = new ConcurrentQueue<Tuple<string, string>>();
 
-        private static readonly Task WriteTask;
-
+        public static event Action<string> Event;
         static LogManager()
         {
-            WriteTask = new Task(obj =>
+            var writeTask = new Task(obj =>
             {
                 while (true)
                 {
@@ -30,6 +29,7 @@ namespace Masuit.Tools.Logging
                     foreach (var logItem in LogQueue)
                     {
                         string logPath = logItem.Item1;
+                        Event?.Invoke(logItem.Item2);
                         string logMergeContent = String.Concat(logItem.Item2, Environment.NewLine, "----------------------------------------------------------------------------------------------------------------------", Environment.NewLine);
                         string[] logArr = temp.FirstOrDefault(d => d[0].Equals(logPath));
                         if (logArr != null)
@@ -49,7 +49,7 @@ namespace Masuit.Tools.Logging
                     }
                 }
             }, null, TaskCreationOptions.LongRunning);
-            WriteTask.Start();
+            writeTask.Start();
         }
 
         private static AutoResetEvent Pause => new AutoResetEvent(false);
@@ -57,8 +57,11 @@ namespace Masuit.Tools.Logging
         /// <summary>
         /// 日志存放目录,默认日志放在当前应用程序运行目录下的logs文件夹中
         /// </summary>
-        public static string LogDirectory { get; set; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "logs");
-
+        public static string LogDirectory
+        {
+            get => Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory).Any(s => s.Contains("Web.config")) ? AppDomain.CurrentDomain.BaseDirectory + @"App_Data\Logs\" : Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "logs");
+            set { }
+        }
         /// <summary>
         /// 写入Info级别的日志
         /// </summary>

+ 21 - 1
Masuit.Tools/NoSQL/RedisHelper.cs

@@ -37,12 +37,32 @@ namespace Masuit.Tools.NoSQL
         /// </summary>
         /// <param name="dbNum">数据库的编号</param>
         /// <param name="readWriteHosts">Redis服务器连接字符串,格式:127.0.0.1:6379,allowadmin=true</param>
-        public RedisHelper(int dbNum, string readWriteHosts)
+        public RedisHelper(int dbNum = 0, string readWriteHosts = "127.0.0.1:6379,allowadmin=true")
         {
             DbNum = dbNum;
             _conn = string.IsNullOrWhiteSpace(readWriteHosts) ? RedisConnectionHelp.Instance : RedisConnectionHelp.GetConnectionMultiplexer(readWriteHosts);
         }
 
+        /// <summary>
+        /// 从对象池获取默认实例
+        /// </summary>
+        /// <param name="db">数据库的编号</param>
+        /// <returns></returns>
+        public static RedisHelper GetInstance(int db = 0)
+        {
+            return new RedisHelper(db);
+        }
+
+        /// <summary>
+        /// 从对象池获取默认实例
+        /// </summary>
+        /// <param name="conn">Redis服务器连接字符串,格式:127.0.0.1:6379,allowadmin=true</param>
+        /// <param name="db">数据库的编号</param>
+        /// <returns></returns>
+        public static RedisHelper GetInstance(string conn = "127.0.0.1:6379,allowadmin=true", int db = 0)
+        {
+            return new RedisHelper(db, conn);
+        }
         #endregion 构造函数
 
         #region String

+ 2 - 2
Masuit.Tools/Properties/AssemblyInfo.cs

@@ -36,7 +36,7 @@ using System.Runtime.InteropServices;
 // 方法是按如下所示使用“*”: :
 // [assembly: AssemblyVersion("1.0.*")]
 
-[assembly: AssemblyVersion("1.8.7")]
-[assembly: AssemblyFileVersion("1.8.7")]
+[assembly: AssemblyVersion("1.9.0")]
+[assembly: AssemblyFileVersion("1.9.0")]
 [assembly: NeutralResourcesLanguage("zh-CN")]
 

+ 26 - 11
Test/Program.cs

@@ -1,8 +1,6 @@
-using System.Collections.Generic;
-using System.Linq;
-using Masuit.Tools.NoSQL.MongoDBClient;
-using MongoDB.Bson;
-using MongoDB.Driver;
+using System;
+using System.Collections.Generic;
+using Masuit.Tools.Logging;
 
 namespace Test
 {
@@ -61,15 +59,32 @@ namespace Test
             //    dic.Add(s, s);
             //}
 
-            var list = MongoDbClient.GetInstance("mongodb://192.168.3.238:27017", "AccountBalance").Database.GetCollection<BsonDocument>("201803-NEO").Indexes.List();
-            while (list.MoveNext())
+            //var list = MongoDbClient.GetInstance("mongodb://192.168.3.238:27017", "AccountBalance").Database.GetCollection<BsonDocument>("201803-NEO").Indexes.List();
+            //while (list.MoveNext())
+            //{
+            //    if (!list.Current.Any(doc => doc["name"].AsString.StartsWith("AccountId")))
+            //    {
+            //        string index = MongoDbClient.GetInstance("mongodb://192.168.3.238:27017", "AccountBalance").Database.GetCollection<BsonDocument>("201803-NEO").Indexes.CreateOne(Builders<BsonDocument>.IndexKeys.Ascending(doc => doc["AccountId"]));
+            //    }
+            //}
+            LogManager.Event += s =>
             {
-                if (!list.Current.Any(doc => doc["name"].AsString.StartsWith("AccountId")))
+                if (s.Contains("ERROR") || s.Contains("FATAL"))
+                {
+                    Console.ForegroundColor = ConsoleColor.Red;
+                }
+                if (s.Contains("DEBUG"))
                 {
-                    string index = MongoDbClient.GetInstance("mongodb://192.168.3.238:27017", "AccountBalance").Database.GetCollection<BsonDocument>("201803-NEO").Indexes.CreateOne(Builders<BsonDocument>.IndexKeys.Ascending(doc => doc["AccountId"]));
+                    Console.ForegroundColor = ConsoleColor.Green;
                 }
-            }
-            //Console.ReadKey();
+                Console.WriteLine(s);
+                Console.ForegroundColor = ConsoleColor.White;
+            };
+            LogManager.Info("aaaaaaaaaaaaaaaaaaaaaaaaa");
+            LogManager.Debug("bbbbbbbbbbbbbbbbb");
+            LogManager.Error(typeof(object), "bbbbbbbbbbbbbbbbb");
+            LogManager.Info("aaaaaaaaaaaaaaaaaaaaaaaaa");
+            Console.ReadKey();
         }
     }