# Mobicoop V3 - Logger Service Logging system for all services. ## Requirements You need [Docker](https://docs.docker.com/engine/) and its [compose](https://docs.docker.com/compose/) plugin. A RabbitMQ instance is also required to receive messages from other services. ## Installation Copy `.env.dist` to `.env` : ```bash cp .env.dist .env ``` and modify it to suit your needs. Then execute : ```bash 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](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.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](LICENSE).