das*_*dot 10 c# logging nlog buffering wrapper
我试图通过NLog MailTarget登录.它运行得很好,但我想用mail BufferedTargetWrapper缓冲日志消息包装mailtarget,直到预定义的代码点,我想手动刷新缓冲区并通过单个邮件发送当前缓冲的日志消息(如邮件目标中定义的那样) ).
如果我定义FlushTimeout或BufferSize在的BufferedTargetWrapper一切,应该还是工作得很好.但是如果没有设置FlushTimeout和BufferSize,我就无法使它工作.
就像在SO Force BufferingTargetWrapper上的这个问题中回答的那样,我没有这样的东西:
LogManager.Configuration.AllTargets.Where(t => t != null && t is BufferingTargetWrapper).ToList().
ForEach(b => ((BufferingTargetWrapper)b).Flush(null));
Run Code Online (Sandbox Code Playgroud)
但是文档和这个答案与我的NLog版本(2.0.0.2000)相矛盾.没有参数的flush方法,只有异步目标的flush方法.
有没有办法强制BufferingTargetWrapper将所有记录的消息刷新到包装目标(通过邮件发送)?
l.p*_*uer 16
根据文档,你的方法不应该工作,但它没关系.只需给flush方法一个空的lambda表达式:
LogManager.Configuration.AllTargets
.OfType<BufferingTargetWrapper>()
.ToList()
.ForEach(b => b.Flush(e =>
{
//do nothing here
}));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5096 次 |
| 最近记录: |