⚠️ Traduction non officielle - Cette documentation est une traduction communautaire non officielle de Docker.

Pilote de logging JSON File

Table des matières

Par défaut, Docker capture la sortie standard (et l'erreur standard) de tous vos conteneurs, et les écrit dans des fichiers en utilisant le format JSON. Le format JSON annote chaque ligne avec son origine (stdout ou stderr) et son horodatage. Chaque fichier de log contient des informations sur un seul conteneur.

{
  "log": "Log line is here\n",
  "stream": "stdout",
  "time": "2019-01-01T11:11:11.111111111Z"
}
Warning

Le pilote de logging json-file utilise un stockage basé sur fichiers. Ces fichiers sont conçus pour être exclusivement accessibles par le daemon Docker. Interagir avec ces fichiers avec des outils externes peut interférer avec le système de logging de Docker et résulter en un comportement inattendu, et devrait être évité.

Utilisation

Pour utiliser le pilote json-file comme pilote de logging par défaut, définissez les clés log-driver et log-opts aux valeurs appropriées dans le fichier daemon.json, qui se trouve dans /etc/docker/ sur les hôtes Linux ou C:\ProgramData\docker\config\ sur Windows Server. Si le fichier n'existe pas, créez-le d'abord. Pour plus d'informations sur la configuration de Docker en utilisant daemon.json, voir daemon.json.

L'exemple suivant définit le pilote de log à json-file et définit les options max-size et max-file pour activer la rotation automatique des logs.

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}
Note

Les options de configuration log-opts dans le fichier de configuration daemon.json doivent être fournies sous forme de chaînes. Les valeurs booléennes et numériques (telles que la valeur pour max-file dans l'exemple ci-dessus) doivent donc être entourées de guillemets (").

Redémarrez Docker pour que les changements prennent effet pour les conteneurs nouvellement créés. Les conteneurs existants n'utilisent pas automatiquement la nouvelle configuration de logging.

Vous pouvez définir le pilote de logging pour un conteneur spécifique en utilisant le drapeau --log-driver avec docker container create ou docker run :

$ docker run \
      --log-driver json-file --log-opt max-size=10m \
      alpine echo hello world

Options

Le pilote de logging json-file supporte les options de logging suivantes :

Option Description Valeur d'exemple
max-size La taille maximale du log avant qu'il soit rotaté. Un entier positif plus un modificateur représentant l'unité de mesure (k, m, ou g). Par défaut -1 (illimité). --log-opt max-size=10m
max-file Le nombre maximum de fichiers de log qui peuvent être présents. Si la rotation des logs crée des fichiers excédentaires, le fichier le plus ancien est supprimé. Efficace seulement quand max-size est aussi défini. Un entier positif. Par défaut 1. --log-opt max-file=3
labels S'applique lors du démarrage du daemon Docker. Une liste séparée par des virgules d'étiquettes liées au logging que ce daemon accepte. Utilisé pour les options avancées de tag de log. --log-opt labels=production_status,geo
labels-regex Similaire et compatible avec labels. Une expression régulière pour correspondre aux étiquettes liées au logging. Utilisé pour les options avancées de tag de log. --log-opt labels-regex=^(production_status|geo)
env S'applique lors du démarrage du daemon Docker. Une liste séparée par des virgules de variables d'environnement liées au logging que ce daemon accepte. Utilisé pour les options avancées de tag de log. --log-opt env=os,customer
env-regex Similaire et compatible avec env. Une expression régulière pour correspondre aux variables d'environnement liées au logging. Utilisé pour les options avancées de tag de log. --log-opt env-regex=^(os|customer)
compress Bascule la compression pour les logs rotatés. Par défaut disabled. --log-opt compress=true

Exemples

Cet exemple démarre un conteneur alpine qui peut avoir un maximum de 3 fichiers de log ne dépassant pas 10 mégaoctets chacun.

$ docker run -it --log-opt max-size=10m --log-opt max-file=3 alpine ash