我有一个.net核心Web API,它使用log4net记录错误。我同时拥有控制台附加程序和文件附加程序,现在想集成滚动条日志记录。
Rollbar在他们的log4net插件包中有一个自定义的附加程序,因此我尝试在log4net的配置文件中添加附加程序,但在Rollbar上看不到任何日志。 我可以直接调用Rollbars记录器,也可以在Rollbar UI中查看日志。
我已将项目令牌添加到Rollbar:
RollbarLocator.RollbarInstance.Configure(
new RollbarConfig("MY_PROJECT_TOKEN"));
这可以很好地将日志发送到Rollbar:
RollbarLocator.RollbarInstance.Logger.Error("direct logging with rollbar");
但是现在我希望使用log4net在Rollbar中显示日志记录,因此我将Rollbar附加程序添加到了log4net配置中,例如:
<appender name="RollbarAppender" type="Rollbar.PlugIns.Log4net.RollbarAppender, Rollbar.Plugins.Log4net">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="RollingFileAppender" />
<appender-ref ref="RollbarAppender" />
</root>
<logger name="Microsoft.AspNetCore" additivity="false">
<level value="ERROR" />
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="RollingFileAppender" />
<appender-ref ref="RollbarAppender" />
</logger>
<logger name="Microsoft.AspNetCore.Hosting.Internal.WebHost" additivity="false">
<level value="INFO" />
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="RollbarAppender" />
</logger>
我还尝试以编程方式添加:
var appender = new Rollbar.PlugIns.Log4net.RollbarAppender(
new RollbarConfig("MY_PROJECT_TOKEN"),
TimeSpan.MaxValue);
((log4net.Repository.Hierarchy.Logger) Log.Logger).AddAppender(appender);
我在启动时没有出现任何错误,因此追加程序似乎加载得很好,但是当我使用log4net登录时,仍然看不到任何东西记录到Rollbar。
答案 0 :(得分:0)
您需要做的就是确保将RollbarAppender添加到您的log4net.config中,例如:
<appender name="rollbar" type="Rollbar.PlugIns.Log4net.RollbarAppender, Rollbar.PlugIns.Log4net">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
</appender>
并确保您包含Rollbar特定配置设置的Rollbar配置文件appsettings.json
(与log4net.log并排):
{
"Rollbar": {
"AccessToken": "NNNNNNNNNNNNNNNNNNNNN",
"Environment": "RollbarNetSamples",
"Enabled": true,
"MaxReportsPerMinute": 30,
"ReportingQueueDepth": 120,
"LogLevel": "Debug",
"ScrubFields": [
"ThePassword",
"TheSecret"
],
"Person": {
"UserName": "jbond",
"id": "JBOND"
},
"PersonDataCollectionPolicies": "Username, Email",
"IpAddressCollectionPolicy": "CollectAnonymized"
},
}