How redirect System.err ?

Hi,
I'm debbuging on device and I would like to change the System.err value to redirect its outputs.
I have some log methods to write common outputs in a text file on the device, and I need to check the output of the mehtod Exception.printStackTrace().
How can I redirect System.err ??
Thanks in advance,

Well, as a matter of fact, CLDC/MIDP specifications (this is CLDC and MIDP forum JFYI) do not provide means for application to get printStackTrace output anyhere else but System.err.
You can not change that fact, no matter how you try. Oh and this is a verifiable fact - anyone can get mentioned specifications and check if it's true.
I would also add that per my reading of above specifications, compliant device even "has a right" to simply swallow anything that goes to System.err - including the output of printStackTrace.
I mean, specs allow devices where trying to get output of printStackTrace is the same as trying to get something from [ /dev/null|http://en.wikipedia.org/wiki//dev/null]. Oh and by the way my conclusion is, again, verifiable - that is, anyone can get the specs and check if there's a requirement for devices not to behave that way.
Does that answer your question?

Similar Messages

  • How do I redirect System.err output in iPlanet 4.1?

    All,
    I've been trying for days to redirect System.err output from a Java program
    to a log file. I followed the instructions here:
    http://knowledgebase.iplanet.com/ikb/kb/articles/4790.html
    Unfortunately, nothing has been written to any of the log files (even though
    I have plenty of System.err.println()'s in my code).
    Anyone else get this to work correctly?
    Thanks in advance,
    --Bill                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

    Hi,
    What is the product web server or application server ? If it is application
    server then I'm very sure that this output will be seen in the kjs log file in
    Unix and in the command window in Windows NT/2K, only if you have allowed the
    process to interact with desktop. Please let me know if this answers your
    question for me to help you further on this.
    Regards
    Raj
    "news.uswest.net" wrote:
    All,
    I've been trying for days to redirect System.err output from a Java program
    to a log file. I followed the instructions here:
    http://knowledgebase.iplanet.com/ikb/kb/articles/4790.html
    Unfortunately, nothing has been written to any of the log files (even though
    I have plenty of System.err.println()'s in my code).
    Anyone else get this to work correctly?
    Thanks in advance,
    --Bill                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Exceptions .. redirecting System.err

    I've redirected System.err to a custom class that extends OutputStream.
    I have a couple of questions which someone in here might know the answer to:
    1. When I receive an exception write(byte b[], int off, int len) is called. The array of bytes is always 8192 long - padded with \x0000 at the end. Why?
    2. How do I know an exception has ended? I want to notify the user when it has ended (with a popup). But write() is called for each line, and flush() doesn't seem to be called at all.
    Best regards,
    Bjorn

    Depends what kind of a program you are writing. If you are doing a standalone application, you can always have a master try-catch block in the main() method that will catch Throwable. Nothing should make it past that.
    Now, if you are doing a servlet or EJB, you don't want to trap every exception because the container is supposed to receive and handle them for you (thread death, out of memory, etc.) If you have a front-controller pattern implemented, you can put a master try-catch block there and do something like the following:
    try {
    // implement cool functionality here
    catch (RuntimeException e) {
    // use code to retrieve stack trace
    throw e;
    catch (Exception e) {
    // use code to retrieve stack trace
    // handle exception in application-specific manner
    catch (Error e) {
    // use code to retrieve stack trace
    throw e;
    The cool "feature" about exceptions is that they propogate. So, if you don't have the appropriate catch block, it will move to the previous caller. Hence, you can have a master exception processor if either a) you re-throw exceptions on to be procsesed by the master exception processor or b) you don't handle the exception at all and let it propogate naturally.
    You also have a number of options so you don't have to rewrite 300 exception try-catch blocks. Subclass Exception, and for all your custom exceptions, put the functionality to dump or store the stack trace there. It will happen anytime your custom exception is instantiated.
    Lots of ways to skin a digital cat. However, the argument that you will have to change code to get new functionality is part and parcel of the beast. If you want to capture the stack trace and do something with it, code somewhere will have to change. Either use inheritance, delegation or the exception propogation mechanism inherent to Java to minimize your work.
    - Saish
    "My karma ran over your dogma." - Anon

  • Redirecting System.err on a mobile phone?

    Hi,
    Is there a way of redirecting System.err? Unfortunately, System.setErr does not exist in MIDP, so I haven't been able to write my own PrintStream to replace err.
    I need to know what the output of Exception.printStackTrace() is at a certain point. There is certainly a way of accessing System.err, otherwise it wouldn't be present in MIDP ... .
    Thanks!
    Stefan

    Hi
    J2ME Polish provides a logging framework, which offers different logging levels and the ability to view logging messages on real devices.
    Mihai

  • How do I redirect System.err msg on NT

    As you probably already know, when running a standard alone java program, say myapp.class, if one wants to redirect the System.out.println message, one might do this on NT dos prompt:
    java myapp > myout.txt
    In this case, all messages from System.out.println that suppose to print on the screen are redirected to be written into myout.txt.
    If your error messages are displayed using System.err.println, the same command does not save your message to the file redirected as above. Does anyone know how can I do some similar thing in the command line to redirect my error messages into a file?
    Thanks for help.
    Stan

    to redirect standard error on nt:
    java myapp 2> myout.txt

  • Redirecting System.err to a JOptionPane

    Hello,
    I tried to write a piece of code which shows all exceptions in a JOptionPane instead of the console. But I meet two difficulties:
    1. I don't know how to detect the line count of the error message (so that currently I have to display the optionPane for each error line, which is unacceptable).
    2. I receive more error messages than expected. The produced parse error gives 5 lines on a console, but here I receive 60.
    What's wrong?
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import javax.swing.*;
    class Redirecting extends JFrame {
      public Redirecting() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(300,300);
        JTextAreaOutputStream err= new JTextAreaOutputStream();
        System.setErr(new PrintStream(err));
        JButton b= new JButton("Produce error");
        b.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent evt) {
         System.out.println(Integer.parseInt("1"));
         System.out.println(Integer.parseInt("2"));
         System.out.println(Integer.parseInt("Error"));
        add(b, BorderLayout.SOUTH);
        setVisible(true);
      public static void main(String[] args) throws Exception {
        EventQueue.invokeLater(new Runnable() {
          public void run() {
         new Redirecting();
      class JTextAreaOutputStream extends OutputStream {
        int icnt=0;
        private JTextArea area;
        public JTextAreaOutputStream() {
          area= new JTextArea();
        public void flush() throws IOException {
          JOptionPane.showMessageDialog(Redirecting.this, area, "Error",
                                  JOptionPane.ERROR_MESSAGE);
    //      area.setText("");
        public void write(byte b[]) throws IOException {
          area.append(new String(b));
        public void write(byte b[], int off, int len) throws IOException {
          System.out.println(icnt++);
          String s = new String(b , off , len);
          area.append(s);
          flush(); // to make error lines visible
        public void write(int b) throws IOException {
          area.append(String.valueOf(b));
    }

    maybe this ?
          * recieving error for testing
          * @param e
         protected void bt_generateError_actionPerformed(ActionEvent e) {
              DateFormat fo = new SimpleDateFormat("mm.dd.yyyy");
              try {
                   // Here reciev parsing error
                   fo.parse("sacascsa");
              } catch (ParseException e1) {
                   String exception = Util.formateException(e1.getStackTrace());
                   // show error
                   Util.showException(frame, exception);
          * utilita
          * @author Dima
         public static class Util {
               * formateException formating error in way you want
               * @param stack
               * @return
              public static String formateException(StackTraceElement[] stack) {
                   String formatedException = "";
                   for (int i = 0; i < stack.length; i++) {
                        System.err.println(stack.getClassName() + ""
                                  + stack[i].getMethodName() + "" + stack[i].getClass()
                                  + " Line" + stack[i].getLineNumber());
                        formatedException = formatedException.concat(
                                  stack[i].getClassName()
                                  + "."
                                  + stack[i].getMethodName()
                                  + " "
                                  + stack[i].getClass()
                                  /** + " Line" + stack[i].getLineNumber() */
                                  + "\n"); // remove comment and recieve errors line
                                                 // numbers
                   return formatedException;
              * showException return JOptionPane with formatted error
              * @param com
              * @param exceptionText
              public static void showException(Component com, String exceptionText) {
                   JPanel canva = new JPanel();
                   canva.setMinimumSize(new Dimension(300, 200));
                   canva.setPreferredSize(new Dimension(300, 200));
                   JTextArea area = new JTextArea();
                   area.setText(exceptionText);
                   JScrollPane pan = new JScrollPane();
                   pan.getViewport().setView(area);
                   canva.setLayout(new BorderLayout());
                   canva.add(pan);
                   JOptionPane.showMessageDialog(com, canva, "Error Title",
                             JOptionPane.ERROR_MESSAGE);

  • Redirecting System.err to a TextArea

    Hi there !
    I want to redirect the output of System.err to a TextArea.
    System.err is everywhere in my project. Is there any simple way to just redirect the output of this err to some TextArea?
    Thanks in Advance
    Dexter

    See the API java.lang.System.setErr()You will then need to start a thread to read from the PrintStream and put the
    output in your text area.
    - ajay

  • System.out and System.err  How to get to show up in log

    Does anyone know if there is anyway to get System.out and System.err
    messages to appear in the log?
    Trying to build and debug a JSP project is a complete nightmare when the
    remote developers cannot see System.out or System.err messages from helper
    classes.
    Platform= Windows NT 4.0
    Weblogic running as a Service
    Thanks in advance!

    Write a wrapper class to redirect the std out to what ever stream you want.
    HTH
    Saman

  • How does javaw (WinXP) threats System.err and System.out?

    Hi, I just faced a problem which is most likely caused by the blocking of System.err.
    So I'm interested in the default handling of theses streams by javaw.
    I would except that they point to something like "/dev/null" (compared to Unix), but the behavior is different.
    I'm sure about this, cause redirecting these streams had fixed my problem.
    (see http://forum.java.sun.com/thread.jspa?messageID=9516593)
    Thanks a lot in advance.
    Greetings Michael
    The entry from the registry:
    "C:\Programme\Java\jre1.6.0\bin\javaw.exe" -jar "%1" %*"

    Bumping.

  • How to capture System.err and System.out in a method?

    Is there some way to capture everything that is sent to System.err or System.out and have it instead go to e.g. a method as a String?
    The reason I want to do is this: I am invoking some method from a class that sends output to System.err and System.out but while that method is run, I want everything that goes to System.out or System.err to instead go to a String buffer or a Swing Scroll Pane.
    What is the easiest way to do this?

    I want everything that goes to System.out or System.err to instead go to a String buffer or a Swing Scroll Pane.Then maybe you should be searching (and then posting) in the Swing forum. Thats where I've seen this question asked and answered many times in the past.

  • Redirecting System.out to a JTextArea

    How can I redirect the System.out Stream into a JTextArea?
    I found the method System.setOut(PrintStream out) but I don't know
    how to get the PrintStream of my TextArea.

    I don't know if this is the most efficient way but it provides an example of using Pipes:
    import java.io.*;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    public class TextAreaStream extends JTextArea implements Runnable{
         private static final PipedOutputStream _pipeOut = new PipedOutputStream();
         static{
                   System.setOut( new PrintStream(_pipeOut) );
         private InputStream _pipeIn;
    private byte[] buffer = new byte[256];
         public TextAreaStream(){
              this(1,10);
         public TextAreaStream(int numRows, int numCols){
              super(numRows, numCols);
              Thread t = new Thread(this);
              t.setDaemon(true);
              t.start();
              try{
              pipeIn =  new BufferedInputStream(new PipedInputStream(pipeOut));
              catch(IOException e){
                   System.err.println("Error creating pipe: "+e);
         public void run(){
              while(true){
                   try{
                        //blocks at read
                        int bytesRead = _pipeIn.read(buffer);
                        append(new String(buffer,0,bytesRead));
                   catch(IOException e){
                        System.err.println(e);
         public static void main(String[] args){
              JFrame f = new JFrame();
              f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              JTextArea text = new TextAreaStream();
              text.setBorder(BorderFactory.createTitledBorder("System.out"));
              f.getContentPane().add(text);
              //Add an input component
              JPanel north = new JPanel(new FlowLayout(FlowLayout.LEFT));
              final JTextField field = new JTextField(25);
              north.add(field);
              north.add(new JLabel("Add text, press Enter"));
              f.getContentPane().add(north, BorderLayout.NORTH);
              field.addActionListener(new ActionListener(){
                   public void actionPerformed(ActionEvent e){
                        System.out.println(field.getText());
                        field.setText("");
    f.setSize(600, 400);
              f.show();
    }

  • Redirecting System.out() output to a JTextArea control

    I want to be able to redirect System.out() and System.err() messages to a JTextArea control:
    I know how to redirect output to a file as follows:
    FileOutputStream fos =
    new FileOutputStream(filename, true);
    PrintStream ps = new PrintStream(fos, true);
    System.setOut(ps);
    System.setErr(ps);
    How can I set it up so that I can recognise when messages have been to System.out() with a view to displaying the message within the JTextArea?
    I guess I need to set it up so that the JTextArea control acts as an Observer. The bit I'm having difficulty with is figuring out how I can automatically determine when information has been written to System.out()?
    Hopefully I'm explaining my issue in enough detail and clarity.
    thanks
    - Garry

    I would suggest you set up a separate thread to monitor System.out. Use a PipedOutputStream and redirect System.out to that, then connect that to a PipedInputStream that your other thread is continually waiting to read. Each time that thread reads a line, it should append the line to the JTextArea, using SwingUtilities.invokeLater.
    This is just a rough outline of something that might work. Hope it helps.

  • Temporarily routing System.out and System.err to a String

    Hi everybody,
    Does anyone know of a way to temporarily route System.out and System.err directly from the console into a String, then set it back to its default to the console? I know how to reroute to a text area:
    TextAreaOutputStream taos = new TextAreaOutputStream(yourTextArea);
    PrintStream ps = new PrintStream(taos);
    System.setErr(ps);
    System.setOut(ps);But it doesn't seem like there is either a way to reroute to a String or a way to switch back to the default routing afterward. Can anyone give me some advice on how to do this, please?
    Thanks,
    Jezzica85

    Too late to the party?
    import java.io.*;
    public class Redirection {
        public static void main(String[] args) {
            System.out.println("To console");
            PrintStream old = System.out;
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            PrintStream ps = new PrintStream(baos);
            System.setOut(ps);
            System.out.println("To memory");
            System.out.print("No 'ln'");
            //System.out.flush(); //needed?
            System.setOut(old);
            System.out.println("To console again?");
            System.out.println("earlier I wrote...");
            byte[] data = baos.toByteArray();
            String message = new String(data);
            System.out.println(message);
    }

  • System.err

    what is the perpose of 'err' reference variable in System class. and how to use it?

    System.out leads the output to the standard output stream (normally mapped to the console screen). System.err leads the output to the standard error stream (and, by default to the console, as well). The idea behind having these two is that the standard output should be used for regular program output, and standard error should be used for error messages.
    Both the streams can be redirected to different destinations. If it is desired to redirect the output to an output file and error messages to a different log file, than on UNIX it can be done as follows:
    java MyClass > output.log 2>error.log
    This causes the regular output (using System.out) to be stored in output.log and error messages (using System.err) to be stored in error.log.
    If you have put error messages in your program, but you don�t want to see them, the technique given below can be used to do it:
    Java MyClass 2> /null
    This redirects the System.err messages to /null, so no error messages appear on the screen, but the normal program output can still be seen.
    Once again, google is your friend!!
    regards,
    Manuel Leiria

  • Redirect, System.out  ?

    Hi.
    I want to redirect System.out to a Swing Component like JTextArea, etc.
    try with printstream, Reader, etc. but i dont know how.!.
    I want to see, messages (The standard out) in a Swing Component.
    plis some help..
    tnks.

    I was using the Redirect method you made edna for my software and it works wonderfully when using strings, unfortunately I ran in to a strange problem which is fitting since my current objective is very strange.
    I am writing a piece of software that has an embedded jython interpreter in it. When I execute my jython scripts all the output went to the console and I had no direct way of saying append to this particular text area since I wasn't able to pass my Java GUI class in to the script.
    Thus redirecting my output with your method came in quite handy. This is where the problem comes in. I tried the println function in my regular java classes and all the primitive types worked fine, but within in the script only String worked. Here is the code for the println function
    PrintStream stdout = new PrintStream(System.out) {
       public void println(String x) {
          outputTextArea.append(x + "\n");
       public void println(int x) {
          outputTextArea.append(x + "\n");
       public void println(boolean x) {
          outputTextArea.append(x + "\n");
       public void println(Object x) {
          outputTextArea.append(x.toString() + '\n');
    };Here is the sample Jython code:
    import JythonScripter
    System.out.println(4) #fails to print correctly
    System.out.println("HelloWorld") #works
    System.out.println(10) #fails
    System.out.println("Goodbye Cruel World") #works
    If you have any advice on why strings would work but not other types I would greatly appreciate it.

Maybe you are looking for

  • Customized Audit Trail report

    Hi Expert, Instead of using the existing audit report "S_AHR_61016380", I would like to create a customized report for this. I try to go throguh the source code in this report, but no luck for me. Could you please let me know the table name to store

  • I have an issue with my Macbook 13"

    Hello. I have recently replaced the hard drive in my Macbook 13" (Mid-2009 Model), and it currently does not have an OS on it. I had purchased OS X Lion from the appstore on my iMac, and made a bootable USB with it, and when I booted it in my mac (He

  • Lost emails, call log gone???

    first time here, so please be gentle!!! hehe i am on my second 8100 from att&t. first, it drops a LOT of calls, probably 4 out of ten. second, without warning, my emails from more than a few hours ago are gone??? third, at the same time, my call log

  • Number of remote RFC connections to SAP from third party application

    Hi All, We are using an external application which is using the JCO API to make a connection to the SAP server to pass invoices. But the connections are note properly closed after invoking the RFCs and SAP seems to be not able to handle further reque

  • Sync iPad with Mobile Calendar?

    Hi, can I sync the calendar on my Nokia E71 with my iPad 2?