La journalisation en tant que JSON – Standard correspond à plusieurs éléments racine, pourquoi?

Je cherche à écrire un fichier journal dans JSON.

Après avoir examiné quelques bibliothèques pour mettre en forme l’inspiration et les meilleures pratiques (Winston for Node.JS, option de journalisation JSON d’Apache, etc.), j’ai remarqué que presque tous écrivent plusieurs éléments racine en utilisant un élément Array ou Root.

Exemple:

{“time”: “2012-09-20T20: 27: 59Z”, “level”: “info”, “message”: “Bonjour tout le monde”} {“heure”: “2012-09-20T21: 37: 59Z” , “level”: “info”, “message”: “Hello Again”}

contre.

[{“time”: “2012-09-20T20: 27: 59Z”, “level”: “info”, “message”: “Hello World”}, {“heure”: “2012-09-20T21: 37: 59Z “,” level “:” info “,” message “:” Hello Again “}]

Pourquoi cela se fait-il alors que techniquement, JSON n’est pas valide pour avoir plusieurs éléments racine?

Lors de la connexion, vous continuez à append de nouvelles entrées de journal. Comment savez-vous quand fermer le tableau? Quand votre enregistrement est-il “complet”? Vous pouvez démarrer le journal avec un tableau vide, [] , mais lorsque vous ajoutez une entrée, vous devez continuer à chercher dans le fichier pour trouver le bon emplacement et vérifier si une virgule est nécessaire ou non.

Ou bien vous écrivez simplement chaque entrée en tant qu’object racine distinct, et chaque fois que vous écrivez quelque chose, elle est indépendante et s’ajoute à la fin du fichier. C’est beaucoup plus simple.

Le journal n’est pas un object JSON unique, c.-à-d. Que le journal entier ne forme pas une chaîne JSON valide. C’est une séquence d’objects JSON indépendants. Les entrées individuelles sont les unités à prendre en compte, et non la totalité du journal.

Parce que le journal augmente toutes les secondes.

Sans Root elemet, le nouveau journal pourrait simplement être ajouté aux anciens éléments. Si vous avez un élément racine ou un tableau, vous devez interroger les nouveaux éléments de journal et les append.

vous avez donc le bon choix.