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:
-
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.
-
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
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
Vous devez vous connecter pour publier un commentaire.
Vous devez avoir la log4j jar sur votre chemin de classe, et l'importation de classes adaptées en haut de votre fichier. Quelque chose comme,
Trouver tous les disparus des importations, et de les importer. IOException est de java.io.IOException, Niveau de est org.apache.log4j.Niveau
Merci, j'ai trouvé le manque importations et compilé avec succès. Vous êtes super, je vous remercie. La seule autre friandise que je suis perdu sur est de savoir comment utiliser la classe (voir mon édité original post ci-dessus), en collaboration avec le log4j.fichier de propriétés. Dans le sysgears lien, il mentionne à écrire quelques lignes de code à utiliser leur classe, mais il n'a pas d'état où écrire? Je ne sais pas si ils sont ce qui implique d'utiliser Tomcat ou l'écrire sur un document distinct .fichier java et de le compiler, ou quelque chose d'autre. Je n'ai aucune idée. Toute aide serait appréciée, comme toujours, je vous remercie.
Si vous trouvez son poste utile, au moins avoir la courtoisie à voter comme je l'ai fait.
Jusqu'vote? Je ne comprends pas. Je suis celui qui a posté la question et j'ai trouvé toutes les réponses utiles, merci.
OriginalL'auteur sbridges
vous pouvez réaliser cela avec un appender:
Ensuite utiliser cette appender avec votre enregistreur, par exemple:
Bien sûr, vous pouvez utiliser la Cible au-dessus de différent, peut-être avec le Système.err
Espère que cela aide.
Cheers,
Christian
OriginalL'auteur Christian