In previous post I’ve described why I’ve started to look into RabbitMQ integration. Here you could find its implementation.

Implementation: Sitecore + RabbitMQ

To send log data from Sitecore we need to extend its Logger. Sitecore uses a logging system based on log4net (it is their implementation and based not on the latest log4net sources) so we could try to use existing open-source module from NuGet at least as a reference.

I took the module, replace the log4net reference with Sitecore.Logging.dll, and made all needed changes. All this code you could find on GitHub in pre-beta version.

GitHub: Sitecore.Logger.RabbitMQ.GelfAppender

How to configure

  1. Put compiled DLLs to the bin folder.
  2. Make changes in web.config:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, Sitecore.Logging" />
  </configSections>

  <log4net>
    <appender name="rabbitmq" type="log4net.Appender.GelfRabbitMqAppender, Sitecore.Logger.RabbitMQ.GelfAppender">
      <HostName value="localhost" />
      <VirtualHost value="/" />
      <Port value="5672" />
      <Exchange value="log4net.gelf.appender" />
      <Username value="guest" />
      <Password value="guest" />
      <Facility value="SampleClient" />
    </appender>

    <root>
      <level value="ERROR" />
      <appender-ref ref="rabbitmq" />
    </root>
  </log4net>

</configuration>
  1. Run RabbitMQ service
  2. Check that messages are sent (you need to use any kind of client AMQP)

Now we can use it.