Jazz logging/tracing question
Hello,
I have some extensions and want to use the same logging/tracing APIs that Jazz uses in Client/Server/Build components. I found out that Jazz uses log4j throughout Client/Server/Build components. Example code is: Log log = LogFactory.getLog(componentId); I just want to confirm that my understanding is correct. Is there any guideline on what logging/tracing APIs that Jazz extensions should use? Is the "componentId" the feature/plugin ID or the service ID? Thank you. |
6 answers
I would recommend using the commons logging api instead of log4j. It
will allows other logging implementations to be supported in the future. We typically get loggers based on the class. For example : import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; private static Log logger = LogFactory.getLog(ProvisionService.class); Richard Jazz Web UI and Server Development. hvlam wrote: Hello, |
Hi Richard,
Thank you for your prompt reply. I thought LogFactory and Log classes belong to log4j. Maybe I was wrong. So the example you showed below is the one that you would recommend us to use. Again, thank you. Richard Backhouse wrote: I would recommend using the commons logging api instead of log4j. It |
The log class names and some of the method names are very similar
between commons logging and log4j. Richard Jazz Web UI and Server Development hvlam wrote: Hi Richard, |
If I use the following logging APIs :
log.info(...) log.warn(...) log.error(...) log.debug(...) log.trace(...) in my build or server extension code. Where would these go? I don't see the .log file in the workspace/.metadata directory under the buildengine and server. Thank you. Richard Backhouse wrote: The log class names and some of the method names are very similar |
Where and what you see in the log will depend on how you are configuring
the log implementation. Assuming that your launch references the "org.apache.commons.logging" and "org.apache.log4j" bundles provided with Jazz the log can be configured by specifying a path to a log4j.properties file via a System property. In your launch vm arguments you can add a -Dlog4j.configuration=file:///${workspace_loc}/<path> The log4j.properties will dictate the level of logging and where the logging is sent to. For example in log4j.properties log4j.rootLogger=WARN, stdout, file log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %-50.50c - %m%n log4j.appender.file=org.apache.log4j.FileAppender log4j.appender.file.File=jazz.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %-50.50c - %m%n Will set the default log level to WARN and will send the log messages to both stdout and a file called jazz.log (found where the process is actually launched from). You can find out more information for log4j configuration on the Apache website. Richard Jazz Web UI and Server development hvlam wrote: If I use the following logging APIs : |
Hi, regarding to logs I've find that plain APIs provide also an RTC own class:
com.ibm.team.repository.common.LogFactory I've seen that it has to be used only after TeamPlatform.startup() method. Which benefit are provided by using this class instead of apache standard class? Thanks, Michele. |
Your answer
Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.