Cette réponse concerne davantage les considérations d'évolutivité - si le nombre de travailleurs peut être élevé et / ou plusieurs d'entre eux peuvent produire des journaux à un taux élevé en même temps.
Oui, l'utilisation simultanée de plusieurs fichiers journaux est une bonne pratique.
Tenter de combiner en un seul fichier journal les journaux de plusieurs travailleurs en temps réel soulèvera des problèmes:
- utiliser des mécanismes de blocage pour éviter la perte de messages ralentira les travailleurs
- les messages de journal peuvent apparaître dans le désordre dans le fichier journal combiné
- une installation de journalisation centralisée qui combine les journaux peut être surchargée en raison de la vitesse d'écriture limitée, les messages seraient perdus
Le partage de fichiers journaux (en utilisant plusieurs fichiers journaux actifs en même temps) est en soi une technique utilisée par certains fournisseurs d'hébergement offrant des services de journalisation centralisée évolutifs et hautes performances. Par exemple, lors de l'exportation de journaux vers des fichiers, StackDriver Logging de Google produit plusieurs fichiers journaux partagés. À partir des entrées du journal dans Google Cloud Storage :
Lorsque vous exportez des journaux vers un compartiment Cloud Storage, Stackdriver Logging écrit un ensemble de fichiers dans le compartiment. Les fichiers sont organisés en hiérarchies de répertoires par type et date de journal. Le type de journal peut être un nom simple comme syslog
ou un nom composé comme
appengine.googleapis.com/request_log
. Si ces journaux étaient stockés dans un compartiment nommé my-gcs-bucket
, les répertoires seraient nommés comme dans l'exemple suivant:
my-gcs-bucket/syslog/YYYY/MM/DD/
my-gcs-bucket/appengine.googleapis.com/request_log/YYYY/MM/DD/
Un seul compartiment peut contenir des journaux de plusieurs types de journaux.
Les répertoires feuilles ( DD/
) contiennent plusieurs fichiers, chacun contenant les entrées de journal exportées pendant une période spécifiée dans le nom de fichier. Les fichiers sont partagés et leurs noms se terminent par un numéro de partition,
Sn
ou An
(n = 0, 1, 2, ...). Par exemple, voici deux fichiers qui pourraient être stockés dans directory
my-gcs-bucket/syslog/2015/01/13/
:
08:00:00_08:59:59_S0.json
08:00:00_08:59:59_S1.json
Ensemble, ces deux fichiers contiennent les syslog
entrées de journal pour toutes les instances pendant l'heure commençant à 0800 UTC. Pour obtenir toutes les entrées de journal, vous devez lire tous les fragments pour chaque période. Dans ce cas, les fragments de fichier 0 et 1. Le nombre de fragments de fichier écrits peut changer pour chaque période en fonction du volume des entrées de journal.
Ces services de journalisation haute performance peuvent également offrir des alternatives à la journalisation dans des fichiers, la gestion des fichiers journaux peut ainsi être évitée si cela vous intéresse:
Enfin - si la fusion de fichiers journaux en temps réel n'est pas une exigence, avoir plusieurs fichiers journaux peut aider à la gestion des journaux hors ligne:
- facile à concevoir des plans de sauvegarde, de compression, d'archivage et d'élimination des journaux progressifs
- le traitement parallèle de plusieurs ensembles de journaux (fichiers journaux) est possible, réduisant / évitant les effets de goulot d'étranglement
- aucun fractionnement et réécriture de fichiers nécessaires