WaveMaker log file location

Studio is an application deployed in Tomcat. When using studio for development, any server side errors will be listed in the wm.log file.

The wm.log file is always located in the same location as the WaveMaker projects directory.

  • On Windows 7, the location will be something like:
C:\Users\owner\Documents\WaveMaker 6.2\logs\wm.log

  • On the Mac, the location will be something like:
/Users/USERNAME/Documents/WaveMaker/logs/wm.log

Note that this may be a large file. Deleting or renaming the file will cause Tomcat to automatically recreate it, so this can be a good way to get the file down to a manageable size.

wm.log

The wm.log file contains all log entries of interest to the WaveMaker developer working in Studio. Once deployed to a standalone application server, such as tomcat, the application server log files will be used instead.

Tip: On OS/X , Linux and MKS, use tail to watch the wm.log file. From a terminal window tail the wm.log before the starting WaveMaker. For example

> tail -f /Documents/logs/wm.log

Controlling Log Levels

Log levels of subsystems can be increased or decreased as needed.

In the "src" directory of a WaveMaker application is the log4j.properties file. This log file can be used to control the logging levels and parameters for WaveMaker subsystems using the log4j logging system. The log4j.properties file in src should be edited instead of the copy in WEB-INFclasses.

Valid log levels in log4j include: WARN, INFO and DEBUG where INFO log more details than WARN and DEBUG being the most verbose logging level.

Setting log4j.logger.com.wavemaker.runtime.data.work to debug will display the HQL generated in the log files.

For example,to log all the SQL sent to and from the RDBMS, all bind parameters and all results, enable the following loggers by removing the hash (#) mark comment marker

#log just the SQL
log4j.logger.org.hibernate.SQL=debug

# log JDBC bind parameters
log4j.logger.org.hibernate.type=debug

This will produce the following example output

DEBUG org.hibernate.SQL; - <select distinct count as col from sakila.filmactor filmactor inner join sakila.actor actor on filmactor.actorid=actor.actorid where actor.actorid=? (thread 29 invok
e runtimeService.read invoke Sakila.read)
DEBUG org.hibernate.type.ShortType; - <binding '6' to parameter: 1> (thread 29 invoke runtimeService.read invoke Sakila.read)


With both SQL and type outputs we know that the following was sent to the RDBMS
select distinct count(*) as col_0_0_ from sakila.film_actor filmactor0_ inner join sakila.actor actor1_ on filmactor0_.actor_id=actor1_.actor_id where actor1_.actor_id=6

Java Service Logging

Using JavaServiceSuperClass

Java Services now inherit from com.wavemaker.runtime.javaservice.JavaServiceSuperClass This provides easy server side logging for java services. Java services are NOT required in inherit from this class. This inheritance is optional.

Output from java services is logged both to the wm.log and to the ProjectLogs folder in the catalina.home, logs, ProjectLogs folder. The log folder is logged in the wm.out. At deployment this is the catalina.out and the ProejectLogs folder.

Example output.
WM.log

LOG FOLDER: C:\Users\ECALLA~1\AppData\Local\Temp\WMCatalinaHome7871578904294644743.temp\logs\ProjectLogs\JavaLogging | true
2011-02-22 16:37:50,689 INFO [dev.wavemaker.JServiceOne] - <JSO: Echo, Echo> (thread 41 invoke JService1.JSO_Echo)
2011-02-22 16:37:50,696 INFO [dev.wavemaker.JServiceTwo] - <JSTwo: Echo, Echo> (thread 26 invoke JService2.JSTwo_Echo)
2011-02-22 16:37:50,696 INFO [dev.wavemaker.JServiceThree] - <JSThree: Echo, Echo> (thread 44 invoke JService3.JSO_Echo)

Project log

START_WM_LOG_LINE 16:35:43,163  INFO (JavaServiceSuperClass.java:158) 16:35:43 - JSThree: Echo, Echo END_WM_LOG_LINE
START_WM_LOG_LINE 16:35:43,163  INFO (JavaServiceSuperClass.java:158) 16:35:43 - JSTwo: Echo, Echo END_WM_LOG_LINE
START_WM_LOG_LINE 16:35:45,384  INFO (JavaServiceSuperClass.java:158) 16:35:45 - JSO: Echo, Echo END_WM_LOG_LINE

Using commons logging directly

If you do not inherit from JavaServiceSuperClass, the recommended method of server side logging is to create an instance of the apache commons logger so that your log messages can be controlled with log level settings such as info, error and debug.

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
..
private static Log logger = LogFactory.getLog(THENAMEOFYOURCLASS.class);
private static Log logger = LogFactory.getLog(com.wavemaker.email.class);
..
logger.info("Your Log Entries");

Server Stack Traces

Stack traces of the server can be obtained by using standard Java methods including sending the kill -Quit signal.

Many tools are available to add that process. Adaptj lets one generate a stack trace directly from their site.SendSignal allows to easily send signal on non-unix platforms.

Compiler Output

Compiler output is displayed at the bottom of the Java Editor page. Compiler output is also logged to wm.log and all service compilation errors are logged to wm.log Using 'tail' or similar on wm.log is an alternative approach to watching the compiler output.

See:Compiler Output


      Share/Bookmark
© All Rights Reserved., CloudJee, Inc