Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 19 additions & 3 deletions docs/03.NET微服务/04.日志/02.NLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,22 +82,38 @@ NLog过滤器允许开发人员根据需要指定要记录的日志事件。

##### 方式1(利用name路由过滤)

> name 名称(*代表多个字符,?代表一个字符)
> name 名称(*代表零个或者多个字符,?代表一个字符)

```xml
<logger name="WebApplog.Controllers.MyController"
<logger name="WebApplog.Controllers.MyController"
level="Info"
writeTo="logb1"
final="true">
</logger>

<logger name="*.CommonServices"
<logger name="*.CommonServices"
level="Info"
writeTo="log_te"
final="true">
</logger>
```

> NLog 4.6以后版本,支持* ?出现在name中任何位置

```xml
<!--
NLog 4.6以后版本,支持* ?出现在name中任何位置

下面这2个控制器都可以匹配上
WebApplog.Controllers.ValV01Controller
WebApplog.Controllers.ValV02Controller
-->
<logger name="WebApplog.Controllers.Val*Controller"
level="Info"
writeTo="logv" final="true">
</logger>
```



demo(不同控制器输出不同日志文件)
Expand Down
50 changes: 50 additions & 0 deletions docs/03.NET微服务/09.熔断重试限流/01.Polly.md
Original file line number Diff line number Diff line change
Expand Up @@ -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<Exception>()
//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。
Expand Down