简体   繁体   中英

how to add rollbar appender to log4net

I have a .net core web api that logs errors using log4net. I have both a console appender and a file appender and now want to integrate rollbar logging.

Rollbar has a custom appender in their plugin package for log4net so I tried addding in the appender in my configuration file for log4net but I'm not seeing any logs on Rollbar. I am able to call Rollbars logger directly and am able to see logs in the rollbar UI.

I've added my project token to Rollbar:

RollbarLocator.RollbarInstance.Configure(
                new RollbarConfig("MY_PROJECT_TOKEN"));

And this works just fine to send logs to Rollbar: RollbarLocator.RollbarInstance.Logger.Error("direct logging with rollbar");

But now I want logging to appear in Rollbar using log4net so I added the Rollbar appender to the log4net config like to:

<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>

I've also tried to add programmatically:

var appender = new Rollbar.PlugIns.Log4net.RollbarAppender(
                new RollbarConfig("MY_PROJECT_TOKEN"), 
                TimeSpan.MaxValue);

((log4net.Repository.Hierarchy.Logger) Log.Logger).AddAppender(appender);

I'm not getting any errors at startup so the appender appears to load just just fine but I'm still not seeing anything logged to Rollbar when I log using log4net.

All you need to do is to make sure the RollbarAppender is added to your log4net.config, for example:

    <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>

AND make sure you Rollbar config file appsettings.json (side-by-side with log4net.log) containing Rollbar specific configuration setting:

{
  "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"
  },
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM