From 1e23c774fed22244ce765a13ce70c41d7d52f8ec Mon Sep 17 00:00:00 2001 From: aierong Date: Mon, 9 Oct 2023 14:56:53 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=A1=A5=E5=85=85name=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../04.\346\227\245\345\277\227/02.NLog.md" | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git "a/docs/03.NET\345\276\256\346\234\215\345\212\241/04.\346\227\245\345\277\227/02.NLog.md" "b/docs/03.NET\345\276\256\346\234\215\345\212\241/04.\346\227\245\345\277\227/02.NLog.md" index 23e53d1..3bfe2e2 100644 --- "a/docs/03.NET\345\276\256\346\234\215\345\212\241/04.\346\227\245\345\277\227/02.NLog.md" +++ "b/docs/03.NET\345\276\256\346\234\215\345\212\241/04.\346\227\245\345\277\227/02.NLog.md" @@ -82,22 +82,38 @@ NLog过滤器允许开发人员根据需要指定要记录的日志事件。 ##### 方式1(利用name路由过滤) -> name 名称(*代表多个字符,?代表一个字符) +> name 名称(*代表零个或者多个字符,?代表一个字符) ```xml - - ``` +> NLog 4.6以后版本,支持* ?出现在name中任何位置 + +```xml + + + +``` + demo(不同控制器输出不同日志文件) From 8fd784475cbf3c89fb7ac7928b8263172c29bdd1 Mon Sep 17 00:00:00 2001 From: aierong Date: Mon, 16 Oct 2023 10:47:53 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=A1=A5=E5=85=85=E8=B6=85=E6=97=B6?= =?UTF-8?q?=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../01.Polly.md" | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git "a/docs/03.NET\345\276\256\346\234\215\345\212\241/09.\347\206\224\346\226\255\351\207\215\350\257\225\351\231\220\346\265\201/01.Polly.md" "b/docs/03.NET\345\276\256\346\234\215\345\212\241/09.\347\206\224\346\226\255\351\207\215\350\257\225\351\231\220\346\265\201/01.Polly.md" index 40edae3..d4e1e67 100644 --- "a/docs/03.NET\345\276\256\346\234\215\345\212\241/09.\347\206\224\346\226\255\351\207\215\350\257\225\351\231\220\346\265\201/01.Polly.md" +++ "b/docs/03.NET\345\276\256\346\234\215\345\212\241/09.\347\206\224\346\226\255\351\207\215\350\257\225\351\231\220\346\265\201/01.Polly.md" @@ -222,6 +222,56 @@ Console.WriteLine(result); 在这个示例中,我们首先创建了一个回退策略,它会在遇到任何异常时执行回退操作,返回默认值 "default value"。然后我们使用 Execute 方法来执行要执行的操作。如果操作失败,回退策略会自动执行回退操作,并返回默认值。 + + + +## 超时策略 + +> 超时一般不单独使用,要配合其它策略一起使用 +> +> 超时后,polly会抛出:TimeoutRejectedException ,这样其它策略就可以捕获 + +```csharp + + //Timeout 超时一般不单独使用,要配合其它策略一起使用 + + //Timeout第一个参数是超时时间,单位:秒 + //超过2秒就异常,polly会抛出:TimeoutRejectedException ,这样Fallback就可以捕获 + var TimeoutPolicy = Policy.Timeout( 2 , + timeoutStrategy: Polly.Timeout.TimeoutStrategy.Pessimistic , + onTimeout: ( context , timespan , task ) => + { + lbtxt.Text = "超时啦"; + } ); + + var _Policyf = Policy.Handle() + //Fallback的第1个参数:失败回调 + //第2个参数:失败后回调(这里可以获取到Exception信息) (这个回调比第1个参数的回调先运行) + .Fallback( ( context ) => + { + lbtxt.Text = "失败回调"; + } , ( ex , context ) => + { + lbtxt.Text = "失败回调开始,错误:" + ex.Message; + } ); + + //把2个策略合并 + var _Policy = Policy.Wrap( _Policyf , TimeoutPolicy ); + + //如果还是失败,就调用Fallback + //如果成功,不会触发Fallback + _Policy.Execute( () => + { + var i = 1; + + Thread.Sleep( 6000 ); + } ); + + +``` + + + ## 策略包装器 策略包装器是一种将多个策略组合在一起的机制。在Polly中,我们可以使用 PolicyWrap 来实现策略包装器。PolicyWrap 可以将多个策略组合在一起,并按照特定的顺序执行它们。下面是一个简单的示例,演示如何使用 PolicyWrap。