Laurent Duperval wrote:
Hi,
Is there a flag I can set so that Struts tells me what it's doing? I'm having a problem with one of my actions: when I click on it, I get a blank page and I don't understand why. I'd like to be able to see what decisions Sruts is taking in order to load my pages, to determine where I made a mistake in my config.
Thanks,
L
You are better off setting up a logging facility as other suggest. However, if you just want a temporary solution prior to doing that, you can use something like the following class, which you ahve to configure to send a log to where you want it.
public class StdOut {
private static final String slash = File.separator;
private static final String environment = Classpath.CLASSES;
private static final String path = "com" + slash + "crackwillow" + slash + "log" + slash+ "store" + slash;
private static final String fileName = "log.crackwillow";
private static final String logPath = environment + path;
public static void log(Object input) {
try {
SaveOutput.start(environment + path + fileName);
System.out.println(input.toString());
new Exception();
} catch (Exception e) {
log("log.error",e.getMessage());
} finally {
SaveOutput.stop();
}
} public static void log(String fileName,
Object input) {
fileName = logPath + fileName;
try {
SaveOutput.start(fileName);
System.out.println(input.toString());
new Exception();
} catch (Exception e) {
log("log.error",e.getMessage());
} finally {
SaveOutput.stop();
}
} public static void log(String input) {
try {
SaveOutput.start(environment + path + fileName);
System.out.println(input);
new Exception();
} catch (Exception e) {
log("log.error",e.getMessage());
} finally {
SaveOutput.stop();
}
} public static void log(String fileName,
String input) {
fileName = logPath + fileName;
try {
SaveOutput.start(fileName);
System.out.println(input);
new Exception();
} catch (Exception e) {
log("log.error",e.getMessage());
} finally {
SaveOutput.stop();
}
} public static void log(boolean input) {
try {
SaveOutput.start(environment + path + fileName);
System.out.println("" + input);
new Exception();
} catch (Exception e) {
log("log.error",e.getMessage());
} finally {
SaveOutput.stop();
}
} public static void log(String fileName,
boolean input) {
fileName = logPath + fileName;
try {
SaveOutput.start(fileName);
System.out.println("" + input);
new Exception();
} catch (Exception e) {
log("log.error",e.getMessage());
} finally {
SaveOutput.stop();
}
}
}class SaveOutput
extends PrintStream {static OutputStream logFile; static PrintWriter printer; static PrintStream oldStdOut; static PrintStream oldStdErr;
/****************************************************
* The print streams are out and err objects of the *
* System class. Println here overrides these. *
****************************************************/
SaveOutput(PrintStream ps) {
super(ps);
}// Starts copying stdout and
// stderr to file
public static void start(String file) {
// Save the old settings
oldStdOut = System.out;
oldStdErr = System.err;
// Create and open a log file
try {
logFile = new PrintStream(new BufferedOutputStream(new FileOutputStream(file, true)));
} catch (FileNotFoundException fnfe) {
}
// Start redirecting the output
System.setOut(new SaveOutput(System.out));
System.setErr(new SaveOutput(System.err));
}
// Restores the original settings of
// stdout and stderr
public static void stop() {
System.setOut(oldStdOut);
System.setErr(oldStdErr);
try {
logFile.close();
} catch (Exception e) {
e.printStackTrace();
}
} public void println(String input) {
((PrintStream)logFile).println(input);
}private class Classpath {
public static final String HERE = Classpath.class.getClassLoader().getResource("com" + File.separator + "crackwillow" + File.separator + "classpath" + File.separator + "Classpath.class").getFile();
public static final String CLASSES = HERE.substring(0, HERE.lastIndexOf("com"));
}
}
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]

