Dois-je enregistrer des messages sur stderr ou stdout?

J’ai un programme que j’écris pour lequel je veux écrire une fonction de journalisation personnalisée (par exemple, diagnostic, avis, avertissement, erreur).

Dois-je utiliser le stream stdout ou le stream stderr pour faire cela? C’est un interprète de toutes sortes et l’utilisateur peut lui demander d’imprimer des résultats.

Edit: S’il vous plaît arrêtez de me recommander les frameworks de journalisation 🙁

    La sortie régulière (le résultat réel de l’exécution du programme) devrait se faire sur stdout , des choses comme vous l’avez mentionné (p. Ex. Diagnostic, avis, avertissement, erreur) sur stderr .

    S’il n’y a pas de “sortie normale”, je dirais que peu importe lequel vous choisissez. Vous pourriez soutenir que la journalisation est la seule sortie, donc cela devrait aller à la sortie stdout . Ou vous pourriez faire valoir que ce sont toujours des “informations exceptionnelles” qui devraient aller à stderr .

    Est-ce que tu écris autre chose à stdout ? Si la réponse est Yes il serait très difficile pour quelqu’un de faire la distinction entre le stream normal et les erreurs au milieu du fichier utilisé pour redirect depuis la stdout .

    Que faire si stdout sera utilisé comme entrée pour un autre programme? Sera-t-il capable d’parsingr ces informations de débogage? Dans ce cas, il serait bon d’écrire uniquement les erreurs critiques sur stderr . Si vous avez besoin d’écrire quelque chose d’autre, vous pouvez envisager d’écrire dans un fichier journal supplémentaire.