71 lines
2.4 KiB
Markdown
71 lines
2.4 KiB
Markdown
# 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 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).
|
|
|
|
## Test
|
|
|
|
```bash
|
|
# 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](https://github.com/nvm-sh/nvm) and use the latest LTS version of Node.
|
|
|
|
## License
|
|
|
|
Mobicoop V3 - Logger Service is [AGPL licensed](LICENSE).
|