Hudson uses java.util.logging for logging. The j.u.l system by default sends every log above INFO to stdout, but unfortunately, most servlet containers alter this behavior, making it difficult for us to tell you exactly where you should look at. Also, they tend to bundle all the logs from the entire JVM into a single place, making it difficult to follow a particular aspect of the system.
Because of these reasons, Hudson is equipped with a GUI for configuring/collecting/reporting log records of your choosing. This page shows you how to do this.
First, select the "system log" from the "Manage Hudson" page:
From there, you can create a custom log recorder, which helps you group relevant logs together while filtering out the noise.
Choose a name that makes sense to you.
You'll be then asked to configure loggers and their levels whose output you'd like to collect. Depending on which part of Hudson you monitor, you'll need to specify different loggers. Tell us the symptom of your problem in the users list and we should be able to tell you where you need to look at. Also, this is really just a wrapper around the java.util.logging package, so if you program in Java, you might be able to guess what to look at.
Once the set up is complete, Hudson will start collecting data. The collected logs are available from the web UI.