diff --git a/OSS.Common.Tests/LogTests.cs b/OSS.Common.Tests/LogTests.cs index 5cad014..1363f27 100644 --- a/OSS.Common.Tests/LogTests.cs +++ b/OSS.Common.Tests/LogTests.cs @@ -1,4 +1,6 @@ -using Microsoft.VisualStudio.TestTools.UnitTesting; +using System; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using OSS.Common.Plugs.CachePlug; using OSS.Common.Plugs.LogPlug; namespace OSS.Common.Tests diff --git a/OSS.Common/OSS.Common.csproj b/OSS.Common/OSS.Common.csproj index 23dd7d0..c1aa2dc 100644 --- a/OSS.Common/OSS.Common.csproj +++ b/OSS.Common/OSS.Common.csproj @@ -3,7 +3,7 @@ netstandard2.0 False - 1.2.6.0 + 1.2.7 False Kevin OSSCoder @@ -13,12 +13,10 @@ http://img1.static.osscoder.com/logo.jpg https://github.com/KevinWG/OSS.Common - 1. 优化HMAC未覆盖的算法 -2. éš�机数算法添加å�¯åЍseed -3. 默认日志功能添加错误Code + 优化æ�’件模å�— - 1.2.6.0 - 1.2.6.0 + 1.2.7.0 + 1.2.7.0 https://github.com/KevinWG/OSS.Common/blob/master/LICENSE diff --git a/OSS.Common/Plugs/CachePlug/CacheUtil.cs b/OSS.Common/Plugs/CachePlug/CacheUtil.cs index 762c30a..dabfe37 100644 --- a/OSS.Common/Plugs/CachePlug/CacheUtil.cs +++ b/OSS.Common/Plugs/CachePlug/CacheUtil.cs @@ -12,7 +12,6 @@ #endregion using System; -using System.Collections.Concurrent; namespace OSS.Common.Plugs.CachePlug { @@ -21,7 +20,7 @@ namespace OSS.Common.Plugs.CachePlug /// public static class CacheUtil { - private static readonly DefaultCachePlug defaultCache= new DefaultCachePlug(); + private static readonly DefaultCachePlug defaultCache = new DefaultCachePlug(); /// /// 通过模å�—å��称获å�– @@ -47,13 +46,46 @@ namespace OSS.Common.Plugs.CachePlug /// ç»�对过期时间 /// 模å�—å��ç§° /// 是å�¦æ·»åŠ æˆ�功 - public static bool AddOrUpdate(string key, T obj, TimeSpan slidingExpiration, DateTime? absoluteExpiration = null, - string moduleName = ModuleNames.Default) + [Obsolete] + public static bool AddOrUpdate(string key, T obj, TimeSpan slidingExpiration, + DateTime? absoluteExpiration = null, + string moduleName = ModuleNames.Default) { return GetCache(moduleName).AddOrUpdate(key, obj, slidingExpiration, absoluteExpiration); } + /// + /// 添加时间段过期缓存 + /// 如果存在则更新 + /// + /// 添加缓存对象类型 + /// 添加对象的key + /// 值 + /// 相对过期的TimeSpan + /// 模å�—å��ç§° + /// 是å�¦æ·»åŠ æˆ�功 + public static bool Set(string key, T obj, TimeSpan slidingExpiration, + string moduleName = ModuleNames.Default) + { + return GetCache(moduleName).Set(key, obj, slidingExpiration); + } + + /// + /// 添加固定过期时间缓存,如果存在则更新 + /// + /// 添加缓存对象类型 + /// 添加对象的key + /// 值 + /// ç»�对过期时间,ä¸�为空则按照ç»�对过期时间计算 + /// 模å�—å��ç§° + /// 是å�¦æ·»åŠ æˆ�功 + public static bool Set(string key, T obj, DateTime absoluteExpiration, + string moduleName = ModuleNames.Default) + { + return GetCache(moduleName).Set(key, obj, absoluteExpiration); + } + /// /// 获å�–缓存对象 /// diff --git a/OSS.Common/Plugs/CachePlug/DefaultCachePlug.cs b/OSS.Common/Plugs/CachePlug/DefaultCachePlug.cs index d54c50e..d7a7d6c 100644 --- a/OSS.Common/Plugs/CachePlug/DefaultCachePlug.cs +++ b/OSS.Common/Plugs/CachePlug/DefaultCachePlug.cs @@ -29,7 +29,8 @@ namespace OSS.Common.Plugs.CachePlug private static readonly MemoryCache m_Cache=new MemoryCache(new MemoryCacheOptions()); #endif /// - /// 添加缓存,如果存在则更新 + /// 添加缓存 + /// 如果存在则更新 /// /// 添加缓存对象类型 /// 添加对象的key @@ -37,11 +38,39 @@ namespace OSS.Common.Plugs.CachePlug /// 相对过期的TimeSpan 如果使用固定时间 =TimeSpan.Zero /// ç»�对过期时间,ä¸�为空则按照ç»�对过期时间计算 /// 是å�¦æ·»åŠ æˆ�功 + [Obsolete] public bool AddOrUpdate(string key, T obj, TimeSpan slidingExpiration, DateTime? absoluteExpiration = null) { return Add(key, obj, slidingExpiration, absoluteExpiration, true); } + /// + /// 添加时间段过期缓存 + /// 如果存在则更新 + /// + /// 添加缓存对象类型 + /// 添加对象的key + /// 值 + /// 相对过期的TimeSpan + /// 是å�¦æ·»åŠ æˆ�功 + public bool Set(string key, T obj, TimeSpan slidingExpiration) + { + return Add(key, obj, slidingExpiration, null, true); + } + + /// + /// 添加固定过期时间缓存,如果存在则更新 + /// + /// 添加缓存对象类型 + /// 添加对象的key + /// 值 + /// ç»�对过期时间,ä¸�为空则按照ç»�对过期时间计算 + /// 是å�¦æ·»åŠ æˆ�功 + public bool Set(string key, T obj, DateTime absoluteExpiration) + { + return Add(key, obj, TimeSpan.Zero, absoluteExpiration, true); + } + /// /// /// @@ -52,7 +81,8 @@ namespace OSS.Common.Plugs.CachePlug /// /// /// - private static bool Add(string key, T obj, TimeSpan slidingExpiration, DateTime? absoluteExpiration, bool isUpdate) + private static bool Add(string key, T obj, TimeSpan slidingExpiration, DateTime? absoluteExpiration, + bool isUpdate) { if (slidingExpiration == TimeSpan.Zero && absoluteExpiration == null) throw new ArgumentNullException("slidingExpiration", "缓存过期时间ä¸�正确,需è¦�设置固定过期时间或者相对过期时间"); @@ -71,7 +101,7 @@ namespace OSS.Common.Plugs.CachePlug return true; #else var opt = new MemoryCacheEntryOptions(); - if (absoluteExpiration != null) + if (absoluteExpiration != null) opt.AbsoluteExpiration = new DateTimeOffset(absoluteExpiration.Value); else opt.SlidingExpiration = slidingExpiration; diff --git a/OSS.Common/Plugs/CachePlug/ICachePlug.cs b/OSS.Common/Plugs/CachePlug/ICachePlug.cs index 747c5f8..9a9edb2 100644 --- a/OSS.Common/Plugs/CachePlug/ICachePlug.cs +++ b/OSS.Common/Plugs/CachePlug/ICachePlug.cs @@ -29,8 +29,30 @@ namespace OSS.Common.Plugs.CachePlug /// Ïà¶Ô¹ýÆÚµÄTimeSpan Èç¹ûʹÓù̶¨Ê±¼ä =TimeSpan.Zero /// ¾ø¶Ô¹ýÆÚʱ¼ä,²»Îª¿ÕÔò°´ÕÕ¾ø¶Ô¹ýÆÚʱ¼ä¼ÆËã /// ÊÇ·ñÌí¼Ó³É¹¦ + [Obsolete] bool AddOrUpdate(string key, T obj, TimeSpan slidingExpiration, DateTime? absoluteExpiration = null); + /// + /// Ìí¼Óʱ¼ä¶Î¹ýÆÚ»º´æ + /// Èç¹û´æÔÚÔò¸üР+ /// + /// Ìí¼Ó»º´æ¶ÔÏóÀàÐÍ + /// Ìí¼Ó¶ÔÏóµÄkey + /// Öµ + /// Ïà¶Ô¹ýÆÚµÄTimeSpan + /// ÊÇ·ñÌí¼Ó³É¹¦ + bool Set(string key, T obj, TimeSpan slidingExpiration); + + /// + /// Ìí¼Ó¹Ì¶¨¹ýÆÚʱ¼ä»º´æ,Èç¹û´æÔÚÔò¸üР+ /// + /// Ìí¼Ó»º´æ¶ÔÏóÀàÐÍ + /// Ìí¼Ó¶ÔÏóµÄkey + /// Öµ + /// ¾ø¶Ô¹ýÆÚʱ¼ä,²»Îª¿ÕÔò°´ÕÕ¾ø¶Ô¹ýÆÚʱ¼ä¼ÆËã + /// ÊÇ·ñÌí¼Ó³É¹¦ + bool Set(string key, T obj, DateTime absoluteExpiration); + /// /// »ñÈ¡»º´æ¶ÔÏó /// diff --git a/OSS.Common/Plugs/DirConfigPlug/DefaultDirConfigPlug.cs b/OSS.Common/Plugs/DirConfigPlug/DefaultDirConfigPlug.cs index eb94ae2..884b88d 100644 --- a/OSS.Common/Plugs/DirConfigPlug/DefaultDirConfigPlug.cs +++ b/OSS.Common/Plugs/DirConfigPlug/DefaultDirConfigPlug.cs @@ -66,7 +66,7 @@ namespace OSS.Common.Plugs.DirConfigPlug var type = typeof(TConfig); - XmlSerializer xmlSer = new XmlSerializer(type); + var xmlSer = new XmlSerializer(type); xmlSer.Serialize(fs, dirConfig); result = new ResultMo(); diff --git a/OSS.Common/Plugs/LogPlug/DefaultLogPlug.cs b/OSS.Common/Plugs/LogPlug/DefaultLogPlug.cs index 6f0ba29..39aa275 100644 --- a/OSS.Common/Plugs/LogPlug/DefaultLogPlug.cs +++ b/OSS.Common/Plugs/LogPlug/DefaultLogPlug.cs @@ -51,7 +51,7 @@ namespace OSS.Common.Plugs.LogPlug return string.Concat(dirPath, DateTime.Now.ToString("yyyyMMddHH"), ".txt"); } - private object obj = new object(); + private readonly object obj = new object(); /// /// 写日志 @@ -61,7 +61,7 @@ namespace OSS.Common.Plugs.LogPlug { lock (obj) { - string filePath = getLogFilePath(info.ModuleName, info.Level); + var filePath = getLogFilePath(info.ModuleName, info.Level); #if NETFW using (StreamWriter sw = new StreamWriter(filePath, true, Encoding.UTF8)) #else diff --git a/OSS.Common/Plugs/ModuleNames.cs b/OSS.Common/Plugs/ModuleNames.cs index 4837b97..fafcdca 100644 --- a/OSS.Common/Plugs/ModuleNames.cs +++ b/OSS.Common/Plugs/ModuleNames.cs @@ -12,6 +12,7 @@ *****************************************************************************/ #endregion + namespace OSS.Common.Plugs { /// @@ -25,24 +26,29 @@ namespace OSS.Common.Plugs public const string Default = "default"; /// - /// 支付模å�— + /// 支付中心模å�— /// public const string PayCenter = "pay_center"; - - /// - /// 推é€�中心模å�— - /// - public const string PushCenter = "push_center"; - + /// /// 社会化中心 /// public const string SocialCenter = "social_center"; /// - /// 多媒体中心模å�— + /// 用户中心模å�— /// - public const string MediaStorage = "media_storage"; + public const string User = "user"; + + /// + /// 订å�•模å�— + /// + public const string Order = "order"; + + /// + /// 产å“�模å�— + /// + public const string Product = "order"; } } diff --git a/README.md b/README.md index 4ae8db9..5db1c0b 100644 --- a/README.md +++ b/README.md @@ -1,57 +1,73 @@ -#OS.Common - ͨÓûù´¡ÊµÏÖ£¬ÌṩÖ÷ÒªÓÐÒÔϵÄÄÚÈÝ£º - 1. »ù´¡Óû§ÏµÍ³É豸ÐÅϢʵÌ嶨Òå¡£ - 2. Ö÷Á÷¼Ó½âÃÜ·½°¸ÊµÏÖ£¨£© - 3. ³£¹æÊµÌåDTOת»¯£¬¾²Ì¬À©Õ¹·½·¨£¨Ê±¼ä£¬×Ö·û´®µÈµÈ´¦Àí£© - 4. »ù´¡ÈÕÖ¾£¬»º´æ£¬ÅäÖø¨Öú¾²Ì¬À༰ĬÈÏ·½°¸ÊµÏÖ - 5. È«¾Ö½á¹û£¬·ÖҳʵÌ嶨Òå +# OS.Common +ͨÓûù´¡ÊµÏÖ£¬µ±Ç°ÊÇÒÔ±ê×¼¿âµÄÐÎʽÌṩ£¬ÔÚnet46·ÖÖ§ÏÂÓбê×¼¿âºÍFramework 4.6µÄÁ½¸ö°æ±¾ÊµÏÖ +µ±Ç°Àà¿âÖ÷ÒªÌṩÒÔϵÄÄÚÈÝ£º -###Authrization - Óû§ÊÚȨÐÅϢģ¿é£¬¿ÉÒÔÔÚÉÏÏÂÎÄÖÐʹÓÃMemberShiper£¬ÆäÖÐÖ÷Òª°üº¬Á½¸öÊôÐÔ£º - 1. AppAuthorize - ¶ÔÓ¦µÄÊÇÓ¦ÓÃÊÚȨÐÅÏ¢Ö÷ÒªÊÇÓ¦ÓÃÀ´Ô´£¬¿Í»§¶ËµÄÀàÐÍµÈ - 2. MemberInfo - ¶ÔÓ¦µÄÊǵ±Ç°µÄÓû§ÐÅÏ¢£¬Óû§Ãû³Æ µÈ - MemberShiper ÖÐÌṩÁËGetToken·½·¨£¬·½±ã¼ÓÃÜÓû§Id£¬Í¬Ê±ÓÐÒ»¸ö¶ÔÓ¦µÄGetTokenDetailÀ´´ÓtokenÖнâÃÜÓû§idÐÅÏ¢ - ʹÓõÄÊǼÓÃÜ·½Ê½ÎªAes¼ÓÃÜ +1. »ù´¡Óû§ÏµÍ³É豸ÐÅϢʵÌ嶨Òå¡£ +2. Ö÷Á÷¼Ó½âÃÜ·½°¸ÊµÏÖ£¨£© +3. ³£¹æÊµÌåDTOת»¯£¬¾²Ì¬À©Õ¹·½·¨£¨Ê±¼ä£¬×Ö·û´®µÈµÈ´¦Àí£© +4. »ù´¡ÈÕÖ¾£¬»º´æ£¬ÅäÖø¨Öú¾²Ì¬À༰ĬÈÏ·½°¸ÊµÏÖ +5. È«¾Ö½á¹û£¬·ÖҳʵÌ嶨Òå - ʹÓ÷½·¨£º¿ÉÒÔÔÚÇëÇóÖÐÌí¼ÓÖмä¼þ»òÕßfilter£¬À´¶ÔÆä½øÐи³Öµ£¬È»ºó¿ÉÒÔÔÚ¾ßÌåµÄÒµÎñÖнøÐе÷Óᣠ- ÐèҪעÒâµÄÊÇÒÔÉÏÁ½¸ö±äÁ¿½ÔΪÏ̱߳äÁ¿£¬Èç¹ûÄãʹÓõÄÒì²½Ị̈߳¬Çë×¢Òâ´«Öµ¸ø¶ÔÓ¦µÄÏ̡߳£ +## Authrization +Óû§ÊÚȨÐÅϢģ¿é£¬¿ÉÒÔÔÚÉÏÏÂÎÄÖÐʹÓÃMemberShiper£¬ÆäÖÐÖ÷Òª°üº¬Á½¸öÊôÐÔ£º +1. AppAuthorize + ¶ÔÓ¦µÄÊÇÓ¦ÓÃÊÚȨÐÅÏ¢Ö÷ÒªÊÇÓ¦ÓÃÀ´Ô´£¬¿Í»§¶ËµÄÀàÐÍµÈ +2. Identity + ¶ÔÓ¦µÄÊǵ±Ç°µÄÓû§ÐÅÏ¢£¬Óû§Ãû³Æ µÈ +MemberShiper ÖÐÌṩÁËGetToken·½·¨£¬·½±ã¼ÓÃÜÓû§Id£¬Í¬Ê±ÓÐÒ»¸ö¶ÔÓ¦µÄGetTokenDetailÀ´´ÓtokenÖнâÃÜÓû§idÐÅÏ¢ +ʹÓõÄÊǼÓÃÜ·½Ê½ÎªAes¼ÓÃÜ -###ComModels - ϵͳĬÈÏʵÌåÐÅÏ¢£¬·ÖҳʵÌå £¬ ½á¹ûʵÌ壬·½±ãÈ«¾ÖʹÓ㬠- ÆäÖнá¹ûʵÌåResultMo°üº¬Èý¸öÊôÐÔ£º - Ret-״̬Â룬ÔÚResultTypesµÄö¾ÙÖÐÒѾ­°Ñ³£¼ûµÄ״̬ÐÅÏ¢×öÁ˼òµ¥¶¨Ò壬ÕâЩ״̬ÂëºÍHttp״̬Âë»ù±¾Ïà¶ÔÓ¦£¬ + +## ComModels +ϵͳĬÈÏʵÌåÐÅÏ¢£¬·ÖҳʵÌå £¬ ½á¹ûʵÌ壬·½±ãÈ«¾ÖʹÓ㬠+ÆäÖнá¹ûʵÌåResultMo°üº¬Èý¸öÊôÐÔ£º +ret-״̬Â룬ÔÚResultTypesµÄö¾ÙÖÐÒѾ­°Ñ³£¼ûµÄ״̬ÐÅÏ¢×öÁ˼òµ¥¶¨Ò壬ÕâЩ״̬ÂëºÍHttp״̬Âë»ù±¾Ïà¶ÔÓ¦£¬ ÆäÖÐ0±íʾΪSuccess£¬Í¬Ê±¶¨ÒåÁ˸öIsSuccess()µÄ·½·¨À©Õ¹£¬´ËֵΪ¿ìËÙÅжϷµ»ØÊÇ·ñÕýÈ·¡£ +msg-¶ÔӦ״̬ÂëµÄÏûÏ¢ - Message-¶ÔӦ״̬ÂëµÄÏûÏ¢ - IsSuccess-¿ìËÙÅжÏ״̬ÂëÊÇ·ñÕýÈ·£¬Ä¬ÈÏ0ʱÕýÈ· +## Encrypt +ϵͳ¼ÓÃÜ»ù´¡¿â +Ö÷Òª°üº¬£ºmd5£¨Md5£©,aes£¨AesRijndael£©,sha1£¨Sha1£©,hmacsha1£¨HmacSha1-¼ÓÑÎsha1¼ÓÃÜ·½Ê½Õ⼸ÖÖ¼ÓÃÜËã·¨ -###Encrypt - ϵͳ¼ÓÃÜ»ù´¡¿â - Ö÷Òª°üº¬£ºmd5£¨Md5£©,aes£¨AesRijndael£©,sha1£¨Sha1£©,hmacsha1£¨HmacSha1-¼ÓÑÎsha1¼ÓÃÜ·½Ê½Õ⼸ÖÖ¼ÓÃÜËã·¨ +## Extention +ϵͳÀ©Õ¹·½·¨£¬Ö÷Òª°üº¬£º +×Ö·û´®×ª»¯À©Õ¹£¬È磺 "0".ToInt32()£¬"xxx".Base64UrlEncode()µÈ +ʱ¼äת»¯À©Õ¹£¬È磺DateTime.Now.ToUtcSeconds() µÈ +TaskÀ©Õ¹·½·¨£¬È磺 Task.WaitResult() µÈ +UrlCodeÀ©Õ¹·½·¨£¬Èç "name=n&code=1".UrlEncode(); +ö¾ÙÀ©Õ¹·½·¨£¬È磺 typeof(Enum).ToEnumDirs(); +xmlÐòÁл¯À©Õ¹·½·¨£¬ È磺 "test".DeserializeXml(); -###Extention - ϵͳÀ©Õ¹·½·¨£¬Ö÷Òª°üº¬£º - ×Ö·û´®×ª»¯À©Õ¹£¬È磺 "0".ToInt32()£¬"xxx".Base64UrlEncode()µÈ - ʱ¼äת»¯À©Õ¹£¬È磺DateTime.Now.ToUtcSeconds() µÈ - TaskÀ©Õ¹·½·¨£¬È磺 Task.WaitResult() µÈ - UrlCodeÀ©Õ¹·½·¨£¬Èç "name=n&code=1".UrlEncode(); - ö¾ÙÀ©Õ¹·½·¨£¬È磺 typeof(Enum).ToEnumDirs(); - xmlÐòÁл¯À©Õ¹·½·¨£¬ È磺 "test".DeserializeXml(); +## Plugs +ϵͳÀ©Õ¹Ä£¿éºÍ¶ÔÓ¦µÄĬÈÏʵÏÖ£¬Í¬Ê±ÔÚPlugsĿ¼Ï¶¨ÒåÁËModuleNamesÀ࣬º¬ÓÐϵͳ³£¼ûÄ£¿é¡£ +Èç¹ûÄãÓи߼¶¶¨ÖÆÐèÇ󣬱ÈÈçÔÚϵͳ²»Í¬Ä£¿éʹÓòå¼þµÄ²»Í¬ÊµÏÖ£¬¿ÉÒÔÔÚ³ÌÐòÈë¿Ú´¦¶¨ÒåÖ¸¶¨Ä£¿éÃû³Æ¶ÔÓ¦µÄ²å¼þʵÏÖ£¬¶øÎÞÐèÐÞ¸ÄÒµÎñ´úÂë + +ÕâÀïÖ÷Òª°üº¬ÒÔÏÂÈýÖÖ²å¼þ + +### Ò».CachePlug +»º´æÄ£¿é£¬ÄÚ²¿¶¨ÒåÁËICachePlug½Ó¿Ú£¬ºÍÒ»¸ö DefaultCachePlugĬÈÏ»º´æÊµÏÖ£¬ +ʹÓÃʱ£¬¿ÉÒÔÖ±½ÓʹÓà CacheUtil ¾²Ì¬ÀàÏµķ½·¨£¬±ÈÈçSet·½·¨ - »¹ÓÐ×Ô¶¨ÒåÑéÖ¤ÊôÐÔÏñ OSRequiredAttributeµÈ£¬¿ÉÒÔʹÓÃIsOsValidateÀ´ÑéÖ¤ÊÇ·ñÑé֤ͨ¹ý¡£ + CacheUtil.Set("key","va",TimeSpan.FromHours(1),"moduleName") -###Modules - ϵͳÀ©Õ¹Ä£¿éºÍ¶ÔÓ¦µÄĬÈÏʵÏÖ,ÆäÖÐÖ÷ÒªÓÐϱßÈý¸ö²¿·Ö: +ÆäÖÐ modulename ÊÇ¿ÉÑ¡²ÎÊý +Èç¹û´«È룬ÔòÔÚ³ÌÐòÈë¿Ú´¦¿ÉÒÔ¸ø OsConfig.CacheProvider(Func) ίÍи³Öµ + ÎÒÃǾͿÉÒÔ¸ù¾ÝʹÓÃÆµÂÊ£¬Êý¾ÝÖØÒªÐÔ£¬ÒÔ¼°ºÍÆäËüϵͳµÄÒÀÀµÇé¿öÀ´¶¨ÒåÌØ¶¨Ä£¿éϵIJ»Í¬»º´æÊµÏÖ + ±ÈÈçÉèÖò»Í¬µÄÄ£¿é·Ö±ðRedis£¬MemcacheµÈ£¬ÓÖ»òÕßÎÒÃÇ¿ÉÒÔÉèÖò»Í¬µÄÄ£¿éʹÓÃRedisµÄ²»Í¬ÊµÀý¡£ + +µ±È»£¬Èç¹ûÕâ¸öίÍÐûÓж¨Ò壬»òÕßίÍзµ»Ø¿Õ£¬¾Í»áʹÓÃĬÈÏ»º´æÊµÏÖ£¬Èç¹ûÎÒÃÇÏ£Íûȫվ»»µ½ÏàͬµÄ»º´æÊµÏÖ£¬ÔòÖ±½Ó·µ»Ø¶ÔӦʵÏÖ¼´¿É¡£ -####Ò».CacheModule - »º´æÄ£¿é - -####¶þ.DirConfig - ×ÖµäÅäÖÃÄ£¿é - -####Èý.LogModule - ÈÕ־ģ¿é +### ¶þ.DirConfigPlug +ÅäÖÃÄ£¿é£¬ ºÍ»º´æµÄʵÏÖÐÎʽÏàͬ£¬¶¨ÒåÁËÒ»¸ö IDirConfigPlug ½Ó¿Ú£¬ºÍÒ»¸ö DefaultDirConfigPlug ʵÏÖ +ʹÓÃʱ£¬Ö±½ÓʹÓà DirConfigUtil ¾²Ì¬Àà¡£ +ĬÈÏʵÏÖÊÇÀûÓÃXmlÐòÁл¯µÄ·½Ê½£¬±£´æµ½±¾µØÎļþÖУ¬ÒÀÈ»¿ÉÒÔ¶¨ÒåÖ¸¶¨Ä£¿éÃû³ÆµÄÌØ¶¨Êý¾ÝÔ´µÄÅäÖÃʵÀý¡£ +±ÈÈçÏîÄ¿±¾ÉíµÄÅäÖÿÉÒÔÉèÖÃÊý¾Ý¿âʵÏÖ£¬ÒÀÀµÆäËûÏîÄ¿µÄ£¬¿ÉÒÔͨ¹ý½Ó¿ÚʵÏÖ¡£ + + +### Èý.LogPlug +ÈÕ־ģ¿é£¬Ò»Ñù£¬ÄÚ²¿¶¨ÒåÁËÒ»¸ö ILogPlug ½Ó¿Ú£¬ºÍÒ»¸ö DefaultLogPlug ĬÈÏʵÏÖ +ʹÓÃʱ£¬Ö±½ÓʹÓà LogUtil ¾²Ì¬Àà¡£ +ĬÈÏʵÏÖÊÇͨ¹ý±£´æµ½±¾µØÎļþµÄÐÎʽʵÏÖ£¬Ã¿¸öСʱÉú³ÉÒ»¸öÎļþ¡£ +ÒÀÈ»¿ÉÒÔ¶¨ÒåÖ¸¶¨Ä£¿éÃû³ÆµÄÌØ¶¨Êý¾ÝÔ´µÄÅäÖÃʵÀý£¬±ÈÈçÓÐЩ·¢ËÍÓʼþ£¬ÓÐЩ·¢ËͶÌÐÅ֪ͨµÈ¡£