Comment utiliser Log4j pour écrire/capture stdout et stderr dans un fichier et l'utilisation de Windows et de Tomcat 5.5 (Java)?

Je suis avec Windows 2008 R2 et Apache Tomcat 5.5, pour votre information.

STDOUT et STDERR peut être automatiquement connecté par le biais de propriétés d'Apache Tomcat, via l'onglet enregistrement -> Redirection de Stdout et Rediriger Stderror zones de texte.

Mais je veux contrôler ce par le biais de log4j.

Je suis en train d'essayer de tirer parti de ConsoleAppender et la TimeAndSizeRollingAppender classe de survol de ce qui est normalement contrôlée par Apache Tomcat innée de l'enregistrement.

Fondamentalement, cependant Tomcat redirige stdout et stderr dans un fichier, je veux faire la même chose à l'aide de log4j et la log4j.propriétés fichier.

J'ai fait quelques recherches sur ce site et d'autres sites comme celui-ci ( log4j rediriger stdout vers DailyRollingFileAppender) et celui-ci ( http://sysgears.com/articles/how-to-redirect-stdout-and-stderr-writing-to-a-log4j-appender#comment-749), mais je suis en cours d'exécution dans un certain nombre de questions fondamentales:

  1. Comment puis-je compiler une de ces classes? Quel devrait être le classpath? J'ai essayé de compiler la classe à partir de la sysgears lien, mais il est revenu 7 erreurs comme impossible de trouver le symbole de la Classe Logger et le symbole de la Classe OutputStream.

  2. Après la compilation, en particulier à partir du sysgears lien, comment puis-je utiliser la classe? Il déclare utiliser la classe, il suffit d'écrire:

    Système.setErr(new PrintStream(nouveau LoggingOutputStream(
    Système.euh, l'Enregistreur.getLogger("outLog"), Niveau.D'ERREUR)));

Grand, mais où dois-je l'écrire? Dans un fichier séparé? Propriétés Tomcat?

Je vous serais reconnaissant de toute aide.

Je vous remercie beaucoup pour votre temps.

Mise à jour:

Voici mon log4j.fichier de propriétés:

log4j.rootLogger=INFO, CATALINA, LOCALHOST, MANAGER, HOST-MANAGER, ADMIN, CONSOLE
# Define all the appenders
log4j.appender.CATALINA=org.apache.log4j.appender.TimeAndSizeRollingAppender
log4j.appender.CATALINA.file=D:/Program Files (x86)/Apache Software Foundation/Tomcat-      5.5.28/logs/catalina.log
log4j.appender.CATALINA.Threshold=DEBUG
log4j.appender.CATALINA.DatePattern='.'yyyy-MM-dd-HH-mm
log4j.appender.CATALINA.layout=org.apache.log4j.PatternLayout
log4j.appender.CATALINA.MaxFileSize=20KB
log4j.appender.CATALINA.DateRollEnforced=true
log4j.appender.CATALINA.MaxRollFileCount=100
log4j.appender.CATALINA.ScavengeInterval=-1
log4j.appender.CATALINA.BufferedIO=false
log4j.appender.CATALINA.CompressionAlgorithm=ZIP
log4j.appender.CATALINA.layout.conversionPattern = %-5p %-23d{ISO8601} [%t] %x: %c{1} - %m%n
log4j.appender.LOCALHOST=org.apache.log4j.appender.TimeAndSizeRollingAppender
log4j.appender.LOCALHOST.file=D:/Program Files (x86)/Apache Software Foundation/Tomcat-5.5.28/logs/localhost.log
log4j.appender.LOCALHOST.Threshold=DEBUG
log4j.appender.LOCALHOST.DatePattern='.'yyyy-MM-dd-HH-mm
log4j.appender.LOCALHOST.layout=org.apache.log4j.PatternLayout
log4j.appender.LOCALHOST.MaxFileSize=20KB
log4j.appender.LOCALHOST.DateRollEnforced=true
log4j.appender.LOCALHOST.MaxRollFileCount=100
log4j.appender.LOCALHOST.ScavengeInterval=-1
log4j.appender.LOCALHOST.BufferedIO=false
log4j.appender.LOCALHOST.CompressionAlgorithm=ZIP
log4j.appender.LOCALHOST.layout.conversionPattern = %-5p %-23d{ISO8601} [%t] %x: %c{1} - %m%n
log4j.appender.MANAGER=org.apache.log4j.appender.TimeAndSizeRollingAppender
log4j.appender.MANAGER.file=D:/Program Files (x86)/Apache Software Foundation/Tomcat-5.5.28/logs/manager.log
log4j.appender.MANAGER.Threshold=DEBUG
log4j.appender.MANAGER.DatePattern='.'yyyy-MM-dd-HH-mm
log4j.appender.MANAGER.layout=org.apache.log4j.PatternLayout
log4j.appender.MANAGER.MaxFileSize=20KB
log4j.appender.MANAGER.DateRollEnforced=true
log4j.appender.MANAGER.MaxRollFileCount=100
log4j.appender.MANAGER.ScavengeInterval=-1
log4j.appender.MANAGER.BufferedIO=false
log4j.appender.MANAGER.CompressionAlgorithm=ZIP
log4j.appender.MANAGER.layout.conversionPattern = %-5p %-23d{ISO8601} [%t] %x: %c{1} - %m%n
log4j.appender.HOST-MANAGER=org.apache.log4j.appender.TimeAndSizeRollingAppender
log4j.appender.HOST-MANAGER.file=D:/Program Files (x86)/Apache Software Foundation/Tomcat-5.5.28/logs/host-manager.log
log4j.appender.HOST-MANAGER.Threshold=DEBUG
log4j.appender.HOST-MANAGER.DatePattern='.'yyyy-MM-dd-HH-mm
log4j.appender.HOST-MANAGER.layout=org.apache.log4j.PatternLayout
log4j.appender.HOST-MANAGER.MaxFileSize=20KB
log4j.appender.HOST-MANAGER.DateRollEnforced=true
log4j.appender.HOST-MANAGER.MaxRollFileCount=100
log4j.appender.HOST-MANAGER.ScavengeInterval=-1
log4j.appender.HOST-MANAGER.BufferedIO=false
log4j.appender.HOST-MANAGER.CompressionAlgorithm=ZIP
log4j.appender.HOST-MANAGER.layout.conversionPattern = %-5p %-23d{ISO8601} [%t] %x: %c{1} - %m%n
log4j.appender.ADMIN=org.apache.log4j.appender.TimeAndSizeRollingAppender
log4j.appender.ADMIN.file=D:/Program Files (x86)/Apache Software Foundation/Tomcat-5.5.28/logs/admin.log
log4j.appender.ADMIN.Threshold=DEBUG
log4j.appender.ADMIN.DatePattern='.'yyyy-MM-dd-HH-mm
log4j.appender.ADMIN.layout=org.apache.log4j.PatternLayout
log4j.appender.ADMIN.MaxFileSize=20KB
log4j.appender.ADMIN.DateRollEnforced=true
log4j.appender.ADMIN.MaxRollFileCount=100
log4j.appender.ADMIN.ScavengeInterval=-1
log4j.appender.ADMIN.BufferedIO=false
log4j.appender.ADMIN.CompressionAlgorithm=ZIP
log4j.appender.ADMIN.layout.conversionPattern = %-5p %-23d{ISO8601} [%t] %x: %c{1} - %m%n
# Configure which loggers log to which appenders
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=INFO, LOCALHOST
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager]=\
INFO, MANAGER
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager]=\
INFO, HOST-MANAGER
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/admin]=\
INFO, ADMIN
Juste pour valider ma compréhension de la question, vous avez déjà configuré Log4J avec Tomcat comme indiqué dans la documentation (tomcat.apache.org/tomcat-5.5-doc/logging.html). Il est juste que vous êtes de ne pas obtenir de STDOUT et STDERR dans les journaux, à droite?
Oui, c'est correct. J'ai posté mon log4j.les propriétés de fichier dans mon post original. Je veux juste journal STDOUT et STDERR vers des fichiers journaux à l'aide de log4j, cependant qui peut être fait. Je vous remercie.

OriginalL'auteur user717236 | 2011-04-20