Aid*_*dan 8 log4net adonetappender
我有一个写入SQL Server数据库的log4net ado appender.我喜欢它,我觉得它很整洁.在我将其发送到生产环境之前,我想知道如果数据库发生故障会导致什么行为.
我不希望应用程序停止,因为日志记录数据库不可用.我假设log4net会默默地失败并且什么都不做,至少那是我所希望的.任何人都可以确认这一点或(更好)指出一些证实这一点的文件吗?
Ste*_*gli 13
appender(就像我所知道的所有log4net appender一样)将无声地失败,从而停止记录.您可以配置appender尝试重新连接:
<reconnectonerror value="True" />
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您可能希望在数据库连接字符串中指定连接超时:
Connect Timeout=1
Run Code Online (Sandbox Code Playgroud)
如果您不这样做,如果数据库脱机,您的应用程序将非常慢.
如果在.Net 4.5.1或更高版本中,您还必须设置ConnectRetryCount=0;连接字符串.
Appender配置:
<ReconnectOnError value="true" />
<connectionString value="...Connect Timeout=1;ConnectRetryCount=0;" />
Run Code Online (Sandbox Code Playgroud)
如果您执行像Log4Net.Async这样的异步日志记录,则Connect Timeout可能会保留默认值15秒.
细节
.Net 4.5.1增加了ADO.NET连接弹性,告诉Log4Net连接仍然打开,即使它不是,并尝试使用ConnectRetryCount重新连接.但是因为我们希望让log4net的做重新连接和ConnectRetryCount有255最大我们应该设置ConnectRetryCount 0来源:https://issues.apache.org/jira/browse/LOG4NET-442 HTTPS://blogs.msdn .microsoft.com/DOTNET/2013/6月26日/宣布-的净框架-4-5-1预览/
| 归档时间: |
|
| 查看次数: |
3814 次 |
| 最近记录: |