logger/README.md

2.4 KiB

Mobicoop V3 - Logger Service

Logging system for all services.

Requirements

You need Docker and Docker-compose.

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 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 :
    • 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).

Test

# unit tests
docker exec v3-user sh -c "npm run test"

# test coverage
docker exec v3-user sh -c "npm run test:cov"

Note : you can run all npm commands directly outside the container (see scripts section of package.json for available commands), but you need NodeJS installed locally. We strongly advise to install Node Version Manager and use the latest LTS version of Node.

License

Mobicoop V3 - Logger Service is AGPL licensed.