Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
ACS Course
ACS logging in Java
H. Sommer
NRAO - Socorro July, 2004
Plain JDK Logger
with ACS behind the scenes
ALMA Project
Application code
(component or comp-client)
getLogger
uses
ContainerServices#getLogger()
java.util.logging.Logger
• info(String msg)
• log(Level, String msg, Throwable)
creates & configures
forwards messages
VM-local ACS log handler
Socorro, July 2004
forwards
(XML)
remote ACS
logging service
Central log display
ALMA Common Software course
2
Code Snippets
from jcontexmpl/HelloLampImpl
ALMA Project
m_logger.info("sayHello called...");
catch (Exception ex)
{
m_logger.log(Level.SEVERE, "ex in setLampBrightness
impl", ex);
}
Socorro, July 2004
ALMA Common Software course
3
JDK Logging API
ALMA Project
• Standard since JDK 1.4
• Easy API (you’ll only need the Logger class)
– short methods with level names (finest, ... info, warning, severe)
each taking a message string.
– More powerful methods log, logp, for logging of values etc.
• Flexible configuration for filtering and formatting (done by ACS)
• Automatic retrieval of method names, line numbers etc
(not guaranteed to work always for all VMs though…)
• API: http://java.sun.com/j2se/1.4.2/docs/api/java/util/logging/package-summary.html
• More info: http://java.sun.com/j2se/1.4.2/docs/guide/util/logging/overview.html
Socorro, July 2004
ALMA Common Software course
4
ACS logging configuration
ALMA Project
• Standard configuration file used:
module acsjlog/src/almalogging.properties
acsStartContainer –java frodoContainer
• User may specify different properties file:
abeansStart -endorsed -Djava.util.logging.config.file=
/x/y/mylogging.properties frodoContainer
• Suppress log levels below INFO (or any other level):
alma.acs.logging.AcsLoggingHandler.level = INFO
• Console output level controlled by separate property:
java.util.logging.ConsoleHandler.level = INFO
Socorro, July 2004
ALMA Common Software course
5
Future of Java ACS Logging
ALMA Project
• The Logger returned from ContainerServices#getLogger is already
configured with a “logger-namespace” unique for the Java component
that requests it.
• We could extend that namespace concept to group or filter log entries
by the components that produced them
• Log levels for suppressing unimportant messages could be set
dynamically, e.g. by the Administrator Client; individually for all
components and containers in the system…
Socorro, July 2004
ALMA Common Software course
6