如何防止 ServiceStack EventLogFactory 记录 DEBUG 事件?

How to prevent ServiceStack EventLogFactory from logging DEBUG events?

EventLogFactory 正在为来自 OrmLite 或 Redis 的每个 DEBUG 语句编写信息日志,只需从这一行代码开始:

LogManager.LogFactory = new EventLogFactory("MyApplication");

例如:

An error occurred in the application: MyApplication
Exception: DEBUG: SELECT "Id", "Name" FROM "MyTable"

An error occurred in the application: MyApplication
Exception: DEBUG: S: GET urn:iauthsession:upuuVGyYt48yoMYjdaBB

此服务每分钟处理数千个 Redis 操作,因此记录所有这些操作很麻烦。

即使我不添加任何 ServiceExceptionHandlers 或 UncaughtExceptionHandlers 也会发生这种情况;我没有任何自己的日志记录代码处于活动状态。

我看到 EventLogFactory 将其 IsDebugEnabled 标志设置为 true,但我找不到在源代码中引用它的任何相关位置。尽管如此,我尝试添加此(冗余)行,但没有效果:

SetConfig(new HostConfig { DebugMode = false });

如何防止这些 DEBUG 日志?

据我所知,事件日志不提供对日志记录的太多控制。

但是,如果您愿意切换到 NLog,那将非常简单。您只需要在配置中添加一条规则,将最低级别设置为 Info:

<logger name="*" minlevel="Info" writeTo="file" />

我刚刚修改了 EventLogFactory 构造函数以接受 debugEnabled:false 属性 这将阻止记录调试消息:

LogManager.LogFactory = new EventLogFactory("MyApplication", debugEnabled:false);

现在 available on MyGet.

的 ServiceStack v4.0.41+ 提供了此更改