logger/README.md

2.0 KiB

Mobicoop V3 - Logger Service

Logging system for all services.

Requirements

You need Docker and its compose plugin.

A RabbitMQ instance is also required to receive messages from other services.

Installation

Copy .env.dist to .env :

cp .env.dist .env

and modify it to suit your needs.

Then execute :

docker compose up -d

The app runs automatically on the port defined in SERVICE_PORT of .env file (default : 5099).

Usage

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 triggered the message (one or more words separated by a dot, last word should be a past action)
  • level : the severity (log level) of the message, as described in RFC5424 syslog :
    • 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.created.info
  • user.created.crit
  • user.updated.warning
  • auth.username.added.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).

License

Mobicoop V3 - Logger Service is AGPL licensed.