{{tag>sysadmin software docker journalisation log}}
====== Docker: Journalisation des conteneurs ======
Docker propose plusieurs mécanismes de journalisation désignés **logging drivers**. Un mécanisme de journalisation est actif par défaut et peut être redéfinit explicitement.
===== Journalisation par défaut =====
Pour afficher les paramètres de configuration du logging driver utilisé par défaut par le daemon Docker:
docker info --format '{{.LoggingDriver}}'
Pour définir des options ou modifier le mécanisme de journalisation par défaut du daemon il faudra modifier le fichier de configuration ''daemon.json''
Ci-dessous un exemple de configuration permettant de limiter le volume de logs via les options ''max-size'' et ''max-file''
{
"log-driver": "json-file",
"log-opts": {"max-size": "10m", "max-file": "3"}
}
===== Redéfinir le mécanisme de journalisation =====
Pour redéfinir le mécanisme de journalisation d'un conteneur, on peut utiliser les options **%%--log-driver%%** et **%%--log-opt%%** directement sur la ligne de commande lors de la création du conteneur:
# Désactive la journalisation
docker run -it --log-driver none alpine ash
# Journaliser en limitant la volumétrie
docker run --log-driver json-file --log-opt max-size=10m --log-opt max-file=3 myapp:version
Ci-dessous la syntaxe à utiliser avec docker-compose
version: '3.7'
services:
my-app:
image: my-app:latest
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "5"
===== Le driver local =====
Le driver "local" permet d'enregistrer les logs dans un format binaire. Il est plus compact et plus rapide que le stockage par défaut "json-file". L'inconvénient du driver local et qu'il ne pourra pas être utilisé avec certains programmes externes de type parsers/forwarders qui ont besoin d'un accès direct au fichier de log au format JSON.
===== Références =====
* https://docs.docker.com/config/containers/logging/configure/
* https://www.shellhacks.com/docker-container-logs-how-to-check/
* https://www.papertrail.com/solution/tips/how-to-live-tail-docker-logs/
* https://jaxenter.com/docker-logging-gotchas-137049.html
* https://stackoverflow.com/questions/42510002/docker-how-to-clear-the-logs-properly-for-a-docker-container