11
votes

Capturer javax.net.debug au fichier

J'ai besoin de sauvegarder le javax.net.debug = Toute sortie créée dans un fichier. J'utilise log4J et j'ai essayé de créer un proxy de journalisation comme dans l'exemple de code ci-dessous; Cependant, ce n'est pas en train de ramasser les informations. Je ne suis pas sûr d'être imprimé de Javax.net.debug. J'ai essayé de capturer System.out et System.errez-vous de cette façon, mais ils n'ont pas non plus travaillé. Merci pour votre aide.

public class StdOutErrLog {

    private static final Logger logger = Logger.getLogger(StdOutErrLog.class);

    public static void tieSystemOutAndErrToLog() {
        System.setOut(createLoggingProxy(System.out));
        System.setErr(createLoggingProxy(System.err));
    }

    public static PrintStream createLoggingProxy(final PrintStream realPrintStream) {
        return new PrintStream(realPrintStream) {
            public void print(final String string) {
                realPrintStream.print(string);
                logger.info(string);
            }
        };
    }
}


0 commentaires

3 Réponses :


0
votes

Vous devez avoir un fichier log4j.properties dans le chemin de classe (/ web-inf / classes /) avec le contenu suivant:

log4j.properties Fichier h3>
datestamp=yyyy-MM-dd/HH:mm:ss.SSS/zzz
roll.pattern.hourly=.MM-dd-yyyy.HH
roll.pattern.daily=.MM-dd-yyyy

log4j.rootLogger=INFO, Console
log4j.logger=INFO, Console

log4j.appender.Console=org.apache.log4j.DailyRollingFileAppender
log4j.appender.Console.DatePattern=${roll.pattern.daily}
log4j.appender.Console.file=${catalina.home}/logs/Console.log
log4j.appender.Console.MaxFileSize=800KB
log4j.appender.Console.MaxBackupIndex=5
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{${datestamp}} [%t] %-5p %m%n

log4j.appender.custom=org.apache.log4j.DailyRollingFileAppender
log4j.appender.custom.DatePattern=${roll.pattern.daily}
log4j.appender.custom.File=${catalina.home}/logs/custom.log
log4j.appender.custom.MaxFileSize=800KB
log4j.appender.custom.MaxBackupIndex=5
log4j.appender.custom.layout=org.apache.log4j.PatternLayout
log4j.appender.custom.layout.ConversionPattern=%d{${datestamp}} [%t] %-5p %m%n

log4j.logger.net.javax=DEBUG, custom


1 commentaires

Cela redirigera les entrées log4j mais ne feront rien pour le journal de débogage SSL (javax.net.debug = tout). Cette réponse ne concerne pas la question initiale.



8
votes

Peut-être que le sous-système fait sa copie des valeurs et que vous êtes trop tard lors de la commutation. Essayez de faire cela d'abord dans votre principal.

Modifier

OK - j'ai complètement manqué votre idiome. Je pense que vous ne devriez pas utiliser cette classe intérieure. Vous devez définir une instance PrintStream sur une sortie de sortie qui crée une nouvelle entrée de journal sur chaque "\ n". La façon dont vous le faites manque maintenant beaucoup de possibilités à "imprimer autour de" votre instance. xxx

puis xxx < p> Vous voulez toujours inclure une référence au flux précédent - laissé comme exercise: -)


1 commentaires

Oui, c'est mon principal. C'est le premier appel avant de définir l'option de débogage pour la SSL.



3
votes

Ceci est un coup long, mais il est possible que les imprimer (string) ne suffisent pas. Par exemple, il existe également impression (objet) , etc., etc., sans parler des différents APPEND () et format () méthodes. < / p>


0 commentaires