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); } }; } }
3 Réponses :
Vous devez avoir un fichier log4j.properties dans le chemin de classe (/ web-inf / classes /) avec le contenu suivant:
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
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.
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 P>
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. P> puis p>
Oui, c'est mon principal. C'est le premier appel avant de définir l'option de débogage pour la SSL.
Ceci est un coup long, mais il est possible que les imprimer (string) code> ne suffisent pas. Par exemple, il existe également
impression (objet) code>, etc., etc., sans parler des différents
APPEND () code> et
format () code> méthodes. < / p>