log4j vs. System.out.println - avantages de l'enregistreur?

Je suis en utilisant log4j pour la première fois dans un projet. Un collègue programmeur m'a dit que l'utilisation de System.out.println est considéré comme un mauvais style, et que log4j est quelque chose comme standard pour l'enregistrement des questions aujourd'hui.

Nous faire beaucoup de tests JUnit - System.out choses s'avère être plus difficile à tester.

Donc j'ai commencé à utiliser log4j pour une Console de contrôleur de classe, c'est juste de la manipulation de paramètres de ligne de commande.

//log4j logger config 
org.apache.log4j.BasicConfigurator.configure();
Logger logger = LoggerFactory.getLogger(Console.class);
Category cat = Category.getRoot(); 

Semble fonctionner:

logger.debug("String");

Produit:

1 [main] DEBUG project.prototype.controller.Console  - String

J'ai eu deux questions concernant ce sujet:

  1. À partir de ma compréhension de base à l'aide de cet enregistreur doit me fournir confortable options pour écrire un fichier de log avec des horodatages - au lieu de spammer le console - si le mode debug est activé lors de l'enregistreur?
  2. Pourquoi Système..println plus difficile à tester? J'ai cherché sur stackoverflow et a trouvé un les tests de recette. Donc je me demande quel genre d'avantage j'ai vraiment l'utilisation de log4j.

source d'informationauteur wishi | 2010-04-28