I usually don't jump into these threads, but this time I can't help
myself.

A couple of questions:

1. What is the host OS?  Most (all) OSes have utilities to help diagnose
sockets and connections.

2. What is your development environment?  Eclipse? JBuilder?

3. How are you handling exceptions?  A simple printStackTrace() can
explain many issues.

4. You say your project is a "java server", I assume that means there is
some other program that sends/ recvs to your socket.  What is that
program doing?  When programming sockets, it is almost a necessity to
use etherreal (or similar) to monitor network traffic.

And last comment, this is the 21st century, java has both local and
remote source level debugging, you need to learn to set that up and use
it.

Debugging using printf or logging is tedious and sometimes ineffective.
Regardless, using a logging utility like log4j is a very good idea.

Good luck and happy programming.

Bryan

-----Original Message-----
From: Mansour [mailto:[EMAIL PROTECTED] 
Sent: Thursday, September 07, 2006 12:46 PM
To: Log4J Users List
Subject: Re: Is't that useless?? may be I don't understand

David Tonhofer wrote:

> Mansour wrote:
>
>> Hi Everybody:
>> I am writing a java server project and got to the point where the 
>> program stops and hangs there with no error it just does nothing. I 
>> decided to go ahead and learn how to use log4j, to be able to see 
>> what's going on and for my future  projects.
>> However through all the documentaion I have came accros, I found no 
>> single usefull example for a beginner. One of the sockets in my 
>> program is stuck there not sending and not recieving, and I am trying

>> to find out what's wrong without modifying the code for my project. 
>> If I have to go and modify the code, adding something similar to 
>> print statements like logger.debug and logger.info as teh examples 
>> show, then log4j is the most useless thing I came across. I am not 
>> expecting  in any way to do somehting like this. Here's a piece of 
>> code that I was able to add to my main method, but again nothign 
>> useful came out.
>>
>> static Logger lgr1 = Logger.getLogger("Joint");
>> BasicConfigurator.configure();
>> lgr1.setLevel(Level.DEBUG);
>> lgr1.info("This is from logger lgr1");
>> lgr1.debug("This is from logger lgr1");
>>
>> Please not that, It's urgent and I can not at this point use any of 
>> the extra classes or layers. All I need is the basic information 
>> about th erunning program. Any advice ??
>>
>
> YODA SAYS:
>
> Adding logging statements to your program is NEVER useless because 
> they are a form of auto-documentation and debugging aid. The 
> difference with System.out.println being evidently that you can switch

> them off if you do not need them and switch them on again if it 
> misbehaves. Then you can push the output to files, sockets, a 
> database, swing applications etc. etc. Any source code that you come 
> accross that has no logging statements should immediately get a couple

> of demerit
> points. Additionally, any source code that you come accross that has 
> no assert() statements and input verifications should get a few 
> additional demerit points.
>
> YODA ALSO SAYS:
>
> It is not good to be in a hurry when you debug socket handling code.
>
>
> Now, ro get the logging to work:
>
> 1) Initialize inside main() or someplace where you are sure to pass:
>
>        //
>        // add layout and appender to root category
>        //
>        {
>            Layout layout = new TTCCLayout();
>            Logger.getRootLogger().addAppender(new 
> ConsoleAppender(layout, ConsoleAppender.SYSTEM_OUT));
>            Logger.getRootLogger().setLevel(Level.DEBUG);
>        }
>
> This will cause your program to log to the console, and accepts all 
> messages down to DEBUG
>
> 2) Group your message sources into conceptual sources, aka. 'Loggers'.

> A good idea is to call your Loggers by the
> name of the method in which they appear. For example, in you class 
> 'Main':
>
> public class Main {
>
>    static final private String CLASS = Main.class.getName();
>    static final private Logger LOGGER_allocateWatchdogServerSocket = 
> Logger.getLogger(CLASS + ".allocateWatchdogServerSocket");
>
>    public static ServerSocket allocateWatchdogServerSocket() {
>        Logger logger = LOGGER_allocateWatchdogServerSocket;
>        logger.debug("Going to allocate now");
>             // BLAH BLAH
>        if (initBunch.getServerPort() == 0) {
>            logger.info("Watchdog's port is 0 - it will be chosen 
> randomly");
>        }
>         // BLAH BLAH
>        }
>    }
>
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
Thank you david for your help:
So what you mean is to go modify my code and insert log statements 
whereever I need.
I'll try. Now back again to your code, seems deep. I am gonna try to 
understand what have you done, then I 'll get back to you.




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to