I am using "org.springframework.amqp.rabbit.log4j.AmqpAppender" class for writing logs into Rabbitmq. All I want is my application log should be enqueued in json format which will eventually be dequeued for elastic search. What will be correct format/pattern for logging in JSON format or is there any library that I can use???
Asked
Active
Viewed 646 times
1 Answers
0
It depends on what is used to parse log messages. For example, you can use logstash for that purposes. In case of log stash there is a library which implements log4j layout to format proper json event messages for logstash: log4j-jsonevent-layout. Your appender configuration will look like:
<appender name="amqp" class="org.springframework.amqp.rabbit.log4j.AmqpAppender">
<param name="host" value="localhost" />
<param name="port" value="5672" />
<param name="virtualHost" value="/" />
<param name="username" value="guest" />
<param name="password" value="guest" />
<param name="exchangeName" value="logs" />
<param name="exchangeType" value="topic" />
<param name="routingKeyPattern" value="%c.%p" />
<param name="applicationId" value="AppId" />
<param name="declareExchange" value="true" />
<param name="durable" value="true" />
<param name="contentType" value="text/plain" />
<param name="senderPoolSize" value="2" />
<param name="maxSenderRetries" value="30" />
<layout class="net.logstash.log4j.JSONEventLayoutV1" >
<param name="UserFields" value="field1:test" />
</layout>
</appender>
You can always write your own layout.
Also, some appender alternatives: rabbitmq-log4j-appender

alsid
- 490
- 6
- 14
-
Thanks @alsid for your answer. I have created one custom appender and using ch.qos.logback.contrib.jackson.JacksonJsonFormatter along with ch.qos.logback.contrib.json.classic.JsonLayout for the purpose and it worked for me. – RIPAN Jun 06 '16 at 12:25