The app subscribes to RabbitMQ queues in order to log messages. We use the routing key with the given format : <**service**>.<**action**>.<**level**>, with :
-**service** : the name of the service that has emitted the message
-**action** : the action that was at the origin of the message (one or more words separated by a dot)
-**level** : the severity (_log level_) of the message, as described in [RFC5424 syslog](https://www.rfc-editor.org/rfc/rfc5424) :
-**emer** : Emergency: system is unusable
-**alert** : Alert: action must be taken immediately
-**crit** : Critical: critical conditions
-**error** : Error: error conditions
-**warning** : Warning: warning conditions
-**notice** : Notice: normal but significant condition
-**info** : Informational: informational messages
-**debug** : Debug: debug-level messages
Examples of valid routing keys :
- user.create.info
- user.create.crit
- user.update.warning
- auth.username.add.info
It is the responsibility of each service to set the routing key to the appropriate value.
To handle logs for a given service, a controller corresponding to the service must be set. In this controller, you must define a handler for each action and level. You must also define a unique RabbitMQ queue for this handler (this permits to use durable queues, allowing to keep logs in RabbitMQ even if the logger service is down).