如何将滚动条附加程序添加到log4net

时间:2019-05-10 19:35:00

标签: c# .net-core log4net rollbar

我有一个.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。

1 个答案:

答案 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"
  },
}