This might be a stupid question but I am a bit lost with java Logger
private static Logger logger = Logger.getLogger("order.web.OrderManager");
logger.info("Removed order " + id + ".");
Where do I see the log? Also this quote from java.util.logging.Logger library:
On each logging call the Logger initially performs a cheap check of the request level (e.g. SEVERE or FINE) against the effective log level of the logger. If the request level is lower than the log level, the logging call returns immediately.
After passing this initial (cheap) test, the Logger will allocate a LogRecord to describe the logging message. It will then call a Filter (if present) to do a more detailed check on whether the record should be published. If that passes it will then publish the LogRecord to its output Handlers.`
Does this mean that if I have 3 request level
log:
logger.log(Level.FINE, "Something");
logger.log(Level.WARNING, "Something");
logger.log(Level.SEVERE, "Something");
And my log level
is SEVERE, I can see all three logs, and if my log level
is WARNING, then I can't see SEVERE log, is that correct? And how do I set the log level
?
Best Answer
In a log file or standard output, depending on your actual log handler configuration. This can be set via a property file or directly via the logging API.
SEVERE
is the most important (highest priority) andFINE
is the least important message type of the 3 shown in your example. So if your log level isSEVERE
, only theSEVERE
messages get logged. If level isFINE
, all 3 messages get logged.This is very useful when in real production environment, you may want to log only the errors and possibly warnings (which are - hopefully - fairly rare, but you want to know about them), so you can set log level to
WARNING
. However, in your development environment, when e.g. debugging a problem, you want to see all information in the logs, even though it creates a large amount of log data and slows down the application. So you set log level toFINE
orFINEST
.Here is a good introduction to Java Logging.
Update: a simple example from the above page to configure the logger to log to a file at level
FINEST
:To log to the console, replace the
FileHandler
above with aConsoleHandler
:This is just an example though - in a real app, it is preferable to configure the logging via a config property file.