Nodejs - console.erreur vs util.debug
J'ai remarqué que node.js a la fois console.error
et util.debug
, ainsi que console.log
et util.log
.
Est-il une différence en plus de la console.* les fonctions étant plus robuste dans les paramètres-ils prendre? L'API dit qu'ils écrire sur la sortie standard stdout et stderr respectivement.
Si il n'y a pas de différence, qui dois-je utiliser et pourquoi?
- Pour être complet: voici la doc pour la console.* fonctions et voici la doc pour les util.* fonctions. Notez que
console.*
prend en charge le paramètre de remplacement via la chaîne de format, tout enutil.*
ajoute un préfixe (timestamp()/"DEBUG") avant que la sortie est écrite. Les deux ensembles de funcs utiliser le sous-jacentprocess.stdout
(pour.log()
), etprocess.stderr
(pour.warn()
et.debug()
). Notez que toutes les opérations sur.stderr
sont synchrones, tandis que les opérations surstdout
sont asynchrones. - pour moi, les grandes différences sont: 1)
util.debug()
etutil.error()
aller àstderr
, tandis que les autres pourstdio
, et 2) lautil
funcs sont synchrones (blocage). - correction,
util
funcs saufutil.log()
sont synchrones
Vous devez vous connecter pour publier un commentaire.
Ils sont deux fonctions différentes, qui font deux choses différentes. Apprendre à lire la source. Il vous aidera beaucoup (même dans des langages tels que C# avec réflecteur)
Sources
Console
Utils
Fonctions De Log:
Console
Utils
Pourquoi
Comme avec tous les autres Unix le système d'orientation, le nœud qui est le plus clairement orientés à la guise de voir le nombre de commentaires de Ryan sur le sujet, les fonctions de journalisation sont donnés dans le même prétexte. Il y a deux classes de base pour l'enregistrement, et ils font tous les deux effectivement la même chose, mais pour des raisons différentes. Pour l'observateur occasionnel, ils sont les mêmes, mais ils ne sont pas vraiment.
De journalisation de la Console est destiné à être utilisé au cours de débogage. Il ira à STDOUT et montrera à vos déclarations sur le REPL1 de la console, utile pour le débogage.
Utilitaire de journalisation est destiné à être utilisé lors de la norme des services d'exécution. Ils goto la processus STDOUT, qui est souvent un fichier journal pour le processus.
Mais puisque cela peut être à l'extérieur remplacées au besoin, et parce que ce sera différent dans le futur (le plus probable) pour les processus Windows (compte tenu de la nouvelle ports et évolution) et d'autres systèmes, alors vous devriez essayer d'utiliser ces méthodes comme la manière de facto d'écrire dans les journaux au cours normal d'exécution. Des exemples de la façon dont il sera différent dans Windows inclut l'utilisation du journal système pour l'enregistrement, par opposition à un droit de log.
Alors, comment savez-vous lequel vous avez besoin?
Si vous envisagez sur l'exécution de cette dans le REPL pour le débogage, utilisez la console de l'enregistreur. Si vous avez l'intention de démarrer le service et l'oublier, puis utilisez les outils de journalisation.
1 Lire Évaluer Impression de Boucle
util
fonctions d'ajouter quelques informations supplémentaires. Savez-vous si il est généralement conseillé d'utiliser l'un ou l'autre? Si oui, où dois-je utiliser l'autre?Joe Lapp commentaire actuellement accepté de répondre mérite d'être soulevée comme une réponse:
Références:
L'Node.js Docs
L'actuel code utils
La console méthodes sont plus robustes que vous pouvez passer à n arguments et ils seront concaténés avant d'être écrite sur la sortie standard stdout ou stderr, mais ils sont tous les deux des emballages pratiques autour de la même sous-jacent appels vers stdout et stderr.
.journal, .info, et .dir sont non bloquant.
.avertir et .erreur blocage.
de la console.journal et util.le journal de l'écrire à l'aide de processus.la sortie standard stdout.écrire. console.erreur et util.déboguer à la fois l'écriture à l'aide de processus.de liaison("stdio").writeError.