27 votes

N'utilisez pas System.out.println dans le code côté serveur

J'ai entendu dire que l'utilisation de System.out.println à des fins de journalisation est une très mauvaise pratique et que cela peut forcer le serveur à échouer.

Je n'utilise pas cette approche, mais je suis très intéressé de savoir pourquoi System.out.println pourrait faire des choses si trash lorsqu'il est utilisé dans du code backend.

21voto

Lars Points 570

Système.out.println est un ar-fonctionnement et à cet effet est beaucoup de temps. Le Problème avec elle à l'aide de votre code, votre programme va attendre jusqu'à ce que la println a fini. Cela peut ne pas être un problème avec les petits sites, mais dès que vous obtenez de la charge ou du nombre d'itérations, vous allez sentir la douleur.

La meilleure approche est d'utiliser une structure de journalisation. Ils utilisent une file d'attente de messages et écrire uniquement si aucune autre sortie qui se passe.

Et un autre avantage est que vous pouvez configurer des fichiers journaux différents à des fins différentes. Quelque chose de votre Ops équipe vont vous aimer pour.

Lire la suite ici:

16voto

C'est une mauvaise pratique car lorsque votre application passe en production, vous ne pouvez pas séparer les journaux d'application des journaux du serveur.

Les équipes Prod veulent que vous sépariez les journaux produits par votre application de ceux du serveur d'application (tomcat, websphere, etc ...): ils veulent pouvoir surveiller le serveur d'application différemment de l'application elle-même.

De plus, en utilisant System.out, vous ne pouvez pas définir le niveau de journalisation: dans Production, vous ne voulez pas imprimer les informations de débogage.

11voto

Geziefer Points 2406

Découvrez Adam Biens article dans le Java Magazine edition novembre/Décembre sur les stress tests de JEE6 applications - c'est gratuit en ligne, vous n'avez qu'à vous y abonner.

À la page 43, il montre, par un serveur d'applications qui parvient à gérer 1700 transactions par seconde tombe à seulement 800 lors de l'insertion d'un seul System.out.println avec fix Chaîne dans chaque.

3voto

Harry Joy Points 27760

Il est considéré comme mauvais car System.out.println(); mange plus de CPU et donc la sortie est lente, ce qui nuit aux performances. (En fait, chaque opération d'E / S consomme de la CPU).

3voto

codebrickie Points 6067

La raison n'est pas que le serveur peut échouer, mais il peut être difficile de trouver une telle sortie sur le serveur. Vous devez toujours utiliser une sorte de cadre de journalisation avec un comportement défini et un fichier de sortie.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X