C# 设置日志批处理的增长量限制
我正在使用NLog在大型生产环境中处理日志消息。以下函数创建NLog配置对象。我真的需要记录所有日志消息,所以我不能删除日志消息。因此,我将C# 设置日志批处理的增长量限制,c#,nlog,C#,Nlog,我正在使用NLog在大型生产环境中处理日志消息。以下函数创建NLog配置对象。我真的需要记录所有日志消息,所以我不能删除日志消息。因此,我将asynctargetrapper的OverflowAction设置为Grow。然而,问题是Azure表存储限制为每批1000条记录。如果我尝试批量保存1001条消息,则不会保存任何内容。我找不到如何将NLog配置为将增长限制在1000,并在达到此值后进行刷新。除此之外,定期刷新一直在进行,但由于我们的应用程序执行大量日志记录,因此增长的批很可能会超过Azu
asynctargetrapper
的OverflowAction
设置为Grow
。然而,问题是Azure表存储限制为每批1000条记录。如果我尝试批量保存1001条消息,则不会保存任何内容。我找不到如何将NLog配置为将增长限制在1000,并在达到此值后进行刷新。除此之外,定期刷新一直在进行,但由于我们的应用程序执行大量日志记录,因此增长的批很可能会超过Azure表存储的1000个日志限制
考虑到Azure表存储的1000条记录限制,如何配置NLog以安全地将所有日志保存到表存储
public static LoggingConfiguration SetupLoggingConfiguration(
string instrumentationKey,
string tableStorageConnectionString,
LogLevel appInsightsLogLevel,
LogLevel tableStorageLogLevel)
{
var config = new LoggingConfiguration();
// Targets
var applicationInsightsTarget = new ApplicationInsightsTarget()
{
Name = nameof(ApplicationInsightsTarget),
InstrumentationKey = instrumentationKey,
Layout = "${longdate}|${level:uppercase=true}|${logger}|${message}"
};
var tableStorageTarget = new TableStorageTarget()
{
Name = nameof(TableStorageTarget),
Layout = "${callsite:cleanNamesOfAnonymousDelegates=true}:${callsite-linenumber}${newline}Stack Trace:${stacktrace}",
ConnectionString = tableStorageConnectionString,
OptimizeBufferReuse = true,
TableName = "Logs"
};
var tableStorageWrapper = new AsyncTargetWrapper()
{
WrappedTarget = tableStorageTarget,
QueueLimit = 500,
OverflowAction = AsyncTargetWrapperOverflowAction.Grow
};
// Rules
config.AddRule(appInsightsLogLevel, LogLevel.Fatal, applicationInsightsTarget);
config.AddRule(tableStorageLogLevel, LogLevel.Fatal, tableStorageWrapper);
return config;
}
如果您的TableStorage目标来自,那么它不可能一次保存100条以上的记录。所以你1001条记录的问题肯定是别的
AsyncTargetTrapper
有一个名为BatchSize
的参数,该参数控制它向目标发送多少日志事件。默认值是NLog版本中的200个logevents。4.5.8
但是,如果在NLog中执行显式刷新,则它将触发
AsyncTargetTrapper
,以独立于BatchSize
刷新其所有挂起的日志事件。我想这可以通过请求NLog项目来改变。但是应该避免调用NLog Flush,只在特殊情况下(例如关机)调用它。事实上,我确实使用了jdetmar中提到的包。谢谢你的回答,我会检查一下,一旦发现问题,我会回复并添加投票。