Changing System.out.println()

Imagine having hundreds of java classes. In these classes there are many System.out.println(data) in different places. When printing in the console screen I cannot know which java class is printing. Of course I could open every java-file and in every System.out.println() write as:
System.out.println("This is TheNameOfJavaClass" + myData)
or
System.out.println(this.getClass().getName() + " - " + myData)...but I want a nice approach like extending or implenting some how in classes and the java classes add java-class-name when using System.out.println(myData) it becomes className + myData
Do you have any suggestion? Is there clever approach to this?
Edited by: Maria1990 on Aug 12, 2010 12:32 PM

You may have missed the first reply, so here just an example:
import java.io.PrintStream;
public class PrefixPrintln {
    private static class Prefixer extends PrintStream {
     public Prefixer(PrintStream ps) {
         super(ps);
     @Override
     public void println(String txt) {
         super.println(findCaller() + ": " + txt);
     // I'm not sure if other print methods will invoke println(String),
     // so you may have to overwrite other print methods as well.
     private String findCaller() {
         StackTraceElement[] elms = Thread.currentThread().getStackTrace();
         for (StackTraceElement elm : elms) {
          String name = elm.getClassName();
          if (!name.equals(this.getClass().getName())
               && !name.equals(Thread.class.getName())) {
              return name;
         return null;
    public static void main(String[] args) {
     System.setOut(new Prefixer(System.out));
     new PrefixPrintln().useSystemOut();
    private void useSystemOut() {
     System.out.println("Some message");
}

Similar Messages

  • How do you change system.out.println colour?

    Hi, I am developing some basic rmi client/server applications, I have an 2D array on a central server being read/written by remote clients. all the development is using system.out. statements at the moment (hopefully being replaced by GUI later) my question is when a client remote calls a read operation, and reads an array location, eg x3, y4 I want to print the location contents in a different colour to indicate the read, at the moment the displayArray() simply has nested for loops to cycle through the array and System.out.println statements to get it to the screen. I wonder is there a simple way to change the colour of system.out type statements? thanks for any help

    I could be wrong, but I don't think that is possible. The System.out and other streams are just streams of characters, and doesn't contain any data about the characters. You could possibly get it to work if you knew which terminal the stream was going to and if the terminal had escape commands that could set colors. BBS browsers have that functionality, but I think that would be a hard path to follow.
    If you are printing out a lot of data and need some color to aid it's readability, try printing directly to your graphic context:
    Graphics g = getGraphics();
    g.setColor(Color.white);
    g.drawString("Hello",100,100);

  • 32-bit JDK 7 System.out.println not working in IDE

    Hi folks,
    I have a 64-bit Windows 7 OS.
    Due to 3rd party library/jar dependencies, i had to install the 32-bit Java JDK 1.7 and Eclipse IDE.
    I also installed NetBeans.
    So i have a 64-bit OS and am running 32-bit Java JDK/JRE & IDEs.
    The problem I am having is that my program's System.out.println("...") statements are not outputting strings to either IDE debug console.
    Executing the compiled program from a command line/prompt produces the expected string output.
    The basic "Hello, World" program is enough to cause this behaviour to start occurring.
    I have not manually / intentionally changed any IDE-specific Debug Console or Windows environment settings.
    One caveat: This same environment has worked successfully in the past ?! Yes, this is one of those "..it worked last week & yesterday and today it isn't and i swear i didn't do anything..." issue.
    Thoughts ?

    Thanks for the reply.
    The 64-bit versions of Java & Eclipse were installed first.
    When i discovered I had to use the 32-bit versions, i un-installed the 64-bit ones & installed the 32-bits.
    Even after that initial un-install 64-bit/install 32-bit process, it was working.
    I have also been installing the Windows 7 64-bit OS updates when i am informed of them.
    I'm not sure if any of these would affect how the Eclipse / NetBeans IDEs behave.
    Behaviour has been inconsistent.
    Initially it was always working.
    But over the past several days, it has been working less and less.
    I don't have any large data structures.
    This isn't a large complicated program, couple hundred lines, so i highly doubt that i'm doing anything to the resources, but something has changed.
    The main project I am working on takes command line parameters, does some initial processing, produces output using System.out.printlns [SOP] then depending on the parameters, branches into 2 different processing paths, let's call them A & B. Each of these processing paths also use SOPs. When i run the program in the IDE going thru path A, sometimes the initial SOP statements will work and the SOP statements specific to path A will also work. If i immediately change the parameters to go thru path B & re-run it, not even the initial SOP statements before the branching decision work.
    I've tried doing System.flush()s too - no affect.
    I haven't tried the re-direction option to a file option you mentioned yet.
    It always works from a command prompt - that is telling me that the Java SOPs are working properly, correct ?
    Inside an Eclipse or NetBeans IDE, SOP output to the debug console is inconsistent.
    Running from a command prompt, the SOPs always work.
    It'd help to know if this an IDE issue, a Java issue, a Windows 7 issue so i can narrow down where to try and correct the situation.
    I have a Windows XP VM set up, i'll try running the program there and see if there's a difference.
    Thanks for your reply.

  • System.out.println - Hello World Example

    Hi All
    I am using Apache Tomcat and trying t produce a simple output to the browser. Cannot get System.out.println to work. See code and out below:
    begin code
    <HTML>
    <HEAD><TITLE>hello jsp</TITLE></HEAD>
    <BODY>
    <%@ page language='java' contentType='text/html' %>
    <%
    String message = "Hello World";
    message = message + "\nAFTER";
    System.out.println("BEFORE");
    %>
    <%= (message) %>
    </BODY>
    </HTML>
    END code
    --begin browser output
    Hello World AFTER
    end browser ouput
    Would be grateful if someone could explain why the System.out.print statement cannot be seen in the browser output.
    many thanks
    Naresh

    System.out prints to System.out. What that is depends:
    In applets, (which the OP was not talking about) it is the Java Console.
    In JSP, it's the same as any application by default.
    You can change in Java what System.out prints to, but you don't often do this. But in JSP it doesn't print to the browser. JSP is not CGI, which does you the standard out as the destination for written data.

  • How does System.out.println(). Work inside src.zip file !

    Hello guyz,
    I was just wondering how System.out.println() worked so i opened up the src.zip file and checked the source code. But could not understand it. As written i remember
    "out is an object encapsulated in the System class."
    Thats ok. But i could not understand the code.
        public final static PrintStream out = nullPrintStream();
        private static PrintStream nullPrintStream() throws NullPointerException {
         if (currentTimeMillis() > 0) {
             return null;
         throw new NullPointerException();
        }Also when i ran the DJ Decompiler it decompiled it to this:
    public class One
         public static void main(String args[])
              System.out.println("hello world");
    import java.io.PrintStream;
    public class One
        public One()
        public static void main(String args[])
            System.out.println("hello world");
    }Also, why does it need to import PrintStream ?

    Peter__Lawrey wrote:
    I was just wondering how System.out.println() worked so i opened up the src.zip file and checked the source code.This value is a place holder. This value is changed as soon as enough of the JVM is initialised for printing to work.
    Also, why does it need to import PrintStream ? It doesn't, but it is used in the code so DJ is including it just in case.Sorry,
    But i don't understand at all.

  • Strange behavior with System.out.println

    I was working with the following code:
    1. public class DemoChar {
    2. public static void main(String args[]) {
    3.
    4. char buf[] = new char[50];
    5. buf[0] = 'a';
    6. buf[1] = 'b';
    7. buf[2] = 'c';
    8. buf[3] = 'd';
    9. buf[4] = 'e';
    10. System.out.println( buf);
    11. }
    12. }
    if you print "buf", it really works; however if you change line 10 by :
    System.out.println("--->" + buf );
    The method "println()" doesn't write "--->abcde". The functionality doesn't the same. It will appear "----> [C@3e25a5"
    Could you help me?
    I don't understand that behavior. I am using "java version 1.6.0_07"

    buf's an array and thus is an object. object's don't inherently know how to represent themselves as Strings, so you have to do other things to make sure that they print out ok. To get a char array to print well, you could use the String method valueOf(...):
    public class DemoChar
      public static void main(String args[])
        char buf[] = {'a', 'b', 'c', 'd', 'e'};
        System.out.println(buf);  // this seems to call implicitly String.valueOf(buf)
        System.out.println("--->" + buf);  // this however seems to call buf.toString() with different results
        System.out.println("--->" + String.valueOf(buf));
    }Also, when posting your code, please use code tags so that your code will retain its formatting and be readable. To do this, you can will need to paste already formatted code into the forum, highlight this code, and then press the "code" button at the top of the forum Message editor prior to posting the message. You may want to click on the Preview tab to make sure that your code is formatted correctly. Another way is to place the tag &#91;code] at the top of your block of code and the tag &#91;/code] at the bottom, like so:
    &#91;code]
      // your code block goes here.
      // note the differences between the tag at the top vs the bottom.
    &#91;/code]or
    {&#99;ode}
      // your code block goes here.
      // note here that the tags are the same.
    {&#99;ode}Edited by: Encephalopathic on Aug 21, 2008 9:40 AM

  • Sustitution of System.out.println in Graphical mode

    Dear Sirs:
    I am changing my applications to graphical mode. I would like to know what is the command that substitutes System.out.println in graphical mode. Thanks in advance

    I am not sure exactly what you mean when you say you are changing your apps to graphical mode,
    I assume you will be using Swing?
    If you will be using a gui in the place of a command prompt program, you may need to completely redesign your app (I'm not sure I can help you with that).
    In a Java applet, and application, you can still use System.out.println. It will print to the console while your app runs. I use it pretty often for simple debugging (Although I use JBuilder and the option for the execution Log, if you are in windows and expect the size of the errors to be large an don't have something like this, you may want to run the output into a file using the IO package).
    Hope this helps you,
    Dan Hughes
    Dear Sirs:
    I am changing my applications to graphical mode. I
    would like to know what is the command that
    substitutes System.out.println in graphical mode.
    Thanks in advance

  • Tomcat Servlet: System.out.println in servlet not printing to catalina.out

    Hello friends ,
    When i m using System.out.println() in servlet its o/p should come in catalina.out but its not coming plz help me....one thing more can we replace exixting catalina.out file with new one...
    please Help me soon.
    Thanks

    go to[u] TOMCAT_DIR/config/server.xml.
    Open this xml file and find something like <Logger className="org.apache.catalina.logger.FileLogger"
                  prefix="catalina_log." suffix=".txt"
                  timestamp="true"/>and
    <Logger className="org.apache.catalina.logger.FileLogger"
                     directory="logs"  prefix="localhost_log." suffix=".txt"
                timestamp="true"/>You can change the log file name to another one.
    It's much better to use a logger tool like log4j (http://logging.apache.org/log4j/docs/download.html) then using a System.out.println()...
    hope that helps

  • System.out.println in iPlanet 6.0

    Hi..All,
    The System.out.println stmt would print out the message when using iPlanet4.x whereas its not doing so when using iPlanet6.0(solaris). What changes/modifications do I have to do to achieve the same.
    Regards,
    Praveen

    Add the following line to your magnus.config file and restart the server.
    Rememeber, to change the server name and path.
    Init fn="nt-console-init" stderr="C:/iPlanet/Servers/https-servername/logs/stderr" stdout="C:/iPlanet/Servers/https-servername/logs/stdout" EarlyInit="yes"

  • Where does System.out.println go?

    Hi Everyone: I know I've seen this topic before, but I'm still having some trouble. I would like to debug my EJBs, and so I've added some System.out.println statements to them. Where does that go? I've looked at the defaultTrace.trc files in the
    C:\usr\sap\P48\JC00\j2ee\cluster\server0\log
    folder, and haven't found any of the text that I think I am writing. I appreciate any guidance! Ian.

    Hi lan,
    I was facing the same question earlier, and now I think I have figured out one possible answer. Actually, where the System.out.println goes is up to the Server Admin to config. There is a default SYSTEM.OUT log controller ( under location controller side) pre-defined to cater for all System.out.println(). All the System.out.println() output is considered as INFO type log message. However, this default SYSTEM.OUT controller is not assigned with any real log destination, thus, we cannot find the output anywhere.
    If you goes to the log configurator (using Visual Admin), you can locate this SYSTEM.OUT controller , and add in a default (Anonymous) destionation for it . (you need to toggle on the advance edit mode from the top menu , then you can add modify the destination settings of a Controller).
    For Anonymous destionation, the println() output will sure go to the defaultTrace.trc (better view it using Log Viewer, instead of viewing it from the log file ).
    Or , you can define a separate file (e.g. c:\temp\myStd.log ) as the log destination ..
    Last but not the least, you need to set the ForceSingleTraceFile setting from 'YES' to 'NO' , then you can see your "myStd.log".
    To change the ForceSingleTraceFile , go to Visual Admin, J2EE server --> Kernel --> LogManager.
    Hope you find the above useful.

  • Lost System.out.println statements.

    Hi
    I have few system.out.println in my jsp which i am using in my JSP provider channel. but when I look at the portal server's /var/opt/SUNWam/debug/desktop.debug file, none are there.. I looked at the web server's access and error logs too, but it is not there also.. can somebody tell me how do it get those ?? do we have any other mechanism to put debug logs ?

    By default the binary which web server runs is uxwdog which eats up System.out.println output. If you want to see the System.out.println then you need to change the product binary from the start script of the portal server instance.
    - Go to <portal-install-dir>/SUNWam/servers/https-<instance-name> and open the start script
    - Change the PRODUCT_BIN=uxwdog to PRODUCT_BIN=ns-httpd , save the file
    - Run the script ./start to start the portal server
    Note : with ns-httpd ON the server will not leave that shell, and in the same window/shell you will be able to see all your System.out.println statements. To close the server you have to kill the server process with "kill -9 pids" command
    Alternate way is to use api inside your application or jsp:
    <%@page import="com.sun.portal.providers.jsp.JSPProvider, com.sun.portal.providers.*, com.sun.portal.providers.containers.*, com.sun.portal.providers.context.*" %>
    <% JSPProvider p=(JSPProvider)pageContext.getAttribute("JSPProvider");
    ProviderContext pc = p.getProviderContext(); %>
    <%-- after that you can use these lines any where in your jsp --%>
    <%
    pc.debugError("your error msg");
    pc.debugMessage("your msg");
    pc.debugWarning("your warning msg");
    %>
    The perticular mgs will be shwon in /var/opt/SUNWam/debug/desktop.debug file as per your "debugLevel" parameter setting in /etc/opt/SUNWps/desktop/desktopconfig.properties file. By default the debugLevel is set to error so only pc.debugError("error msg") will be shown.
    Sanjeev

  • Override System.out.println()

    Guys,
    I know that "System" is a final class and I can't override it.
    But "PrintStream" is not a final class and it contains "println(Object)"
    method in it. So, I can override it, right?
    My basic requirement is, when I have a program with
    System.out.println("sreedhar");
    say, it should display me something like
    Oct 11, 2007 4:05:05 PM INFO: sreedhar.
    ie. I want to override S.o.p to Logger.info (where Logger is from log4j; or for that matter from commons-logging or JDK logging).
    Can this be done by changing System.java, dropping System.class in tools.jar?

    System has this method. With its help, you can use your own (prepending, timestamping etc.) PrintStream object:
    public static void setOut(PrintStream out)
    //    Reassigns the "standard" output stream.Kaj was faster.
    Edited by: BIJ001 on Oct 12, 2007 8:43 AM

  • Why we use logger instead of System.out.println for debugging?

    Hi,
    why we use logger instead of System.out.println for debugging?
    Regard
    Sankar

    Ya Basha,
    good question....
    You can use the idoc method to transfer the data when you are having an interface between the sap system and the legacy system......
    All the times BDC is not preferable like take the case you developed on upload program with bdc after some days your company thought to go for upgrade the sap vesion from lower version to upper version... in that upgraded version the application may change like sequence of fields or screens at that time you previous bdc program will not work here so u have to develop a new program and and you have to take the things into consideration again...
    where as if you use bapi or idoc method it will support the upgradations...
    in the case of bdc you have to take the data into flat files.... and then upload it to sap system after all the validations done some times the data which is in the flat file is confidential so there is no security if u take such data in flat file any user can chang the data even though if u maintain the data in application server super user can change the data
    where is idoc is fully secured... you can easily establich the interface between the systems and once it is done you can transfer the data with full security because idoc r generated by a program... so there is no manual interaction.....
    I think i gave some useful answer to you
    ~~Guduri

  • Does System.out.println() has a limit ?

    I have this little program that permuates strings
    public class PermutationGenerator
         private void perm(String s, String prefix)
              int length = s.length();
              if (length== 0)
              System.out.println(prefix);
              else
                   for (int i = 0; i < length; i++)
                        perm(s.substring(0, i) + s.substring(i+1, length), prefix + s.charAt(i));
         public void printPermutations(String s)
              perm(s,"");
         public static void main(String[] args)
         new PermutationGenerator().printPermutations("word") ;
    The problem is that when I use a longer string like "longword", I only get 299 different permutations printed. Even if I use an "evenlongerword", I will get 299 permutations. Is this because of java? Because I can't see any errors in my code.

    You probably need to change your command prompt
    screen buffer size. Sounds like you have the height
    set to 300 lines. You can also redirect your output
    to a file to see everything.Very well spotted! The voice of experience!

  • Turn off System.out.println

    The nohup.out file is getting too big, how to turn off System.out.println without change any coding?
              

    java weblogic.Server > server.out 2>&1
              cheers
              mbg
              "Jen " <[email protected]> wrote in message
              news:[email protected]..
              >
              > How can I capture the System.out on windows?Thanks
              >
              > "Deyan D. Bektchiev" <[email protected]> wrote:
              > >just put the output to /dev/null on Unix/Linux or "nul" on Windows...
              > >
              > >Of course then the output is lost forever and you'll only have the
              > >Weblogic log files to look at any potential problems.
              > >
              > >--dejan
              > >
              > >java guy wrote:
              > >
              > >>The nohup.out file is getting too big, how to turn off
              System.out.println
              > >without change any coding?
              > >>
              > >>
              > >
              >
              

Maybe you are looking for

  • Keynote and Pages saving as .zip

    Hi, We have just rolled out an ipad scheme at school and students in year 7 all have iPad mini's with iOS 7 inlcuding pages numbers and keynote. When they are creating Pages and Keynote files they use a website such as edmodo to upload their work to

  • Geting a variable from a String

    Hi, i need to get a variable from a string. For example: int test1; int test2; int test3; int test = getvariablefromstring("test"+3); ..................

  • KT4 Ultra and IDE 3

    I have (1) HDD on IDE 1, (1) DVD(master) and DVD-RW(slave) on IDE 2.  Is it possible to set up IDE 3 to be used, not as RAID, so that I can put one of the DVD drives on IDE 3.  The manual really doesn't get into that much.  And, is it even worth doin

  • Why do I have to keep re-installing Flash Player?

    I have read the forums and tried all the suggestions and nothing works. I have Windows 7 and IE 9. It has nothing to do with IE as I have the same problem with Firefox. This is REALLY frustrating!

  • Broadcom had a windows 7 update that will no longer pair with iphone?

    there was a recent Aug 2013 Windows 7 update for broadcom bluetooth and now laptop it will no longer pair iphone5 or iphone4s or ipod. I tried system restore before the update but no luck. went to broadcom.com to get latest drivers but now it says it