An elaborate logging feature has been implemented in Stardust characterized by:
The standard Stardust logger is implemented as a wrapper which can
adapt to a number of existing logging implementations including for instance
log4j. Which logger is used is a matter of configuration. Please include the log4j.jar
file in your classpath to enable the creation of a carnot.log file for
the client and server side.
A separate audit trail logger writes log entries to the audit trail.
The configuration for the logging differs for client and server mode. Spring local mode is classified as client mode. For the client, log4j is always used and explicit logger bootstrapping is done, whereas for the server Stardust tries to use the existing application server logging implementation. In this case, configuration is a matter of application server configuration.
Stardust clients always use the provided log4j logger. It is
configured by the following properties in the carnot.properties file.
| Property Name | Semantics and Defaults |
|---|---|
Logging.Directory |
Specifies where the log file resides. |
e.g. %Stardust
Installation%/etc/log |
Default directory where log files are written to - can be changed arbitrarily |
Logging.ConsoleOutput |
Determines whether logging information is written to console output. |
true |
Logging information is redirected to console output. |
false |
Default value - logging information is not written to console output. |
Logging.LogLevel |
Determines the amount of information being logged. |
INFO |
Basic level of logging (default value) |
DEBUG |
Detailed level of logging |
WARN |
Warn level of logging |
ERROR |
Error level of logging |
Logging.Format |
Describes logging format |
%d{yyyy-MM-dd HH:mm:ss,SSS} |
Default value - can be adjusted if necessary (use the log4j pattern). |
Logging.MaxFileSize |
Specifies a maximum size in bytes of the log file stored on your system. |
4194304 |
The maximum size is 4194304 bytes |
Logging.Filters |
Class names and packages of which the system out are to be displayed |
e.g. org.eclipse.stardust.WorkflowSession |
Output produced by this class or package will be displayed. If not specified, everything will be logged. |
Every client has a name and writes to a log file of the same name with
the extension .log. The log files are filled up to the provided maximum
file size and are then archived by appending a timestamp to the file name.
If the provided configuration possibilities don't meet your needs, you can provide your own log4j configuration as described in the log4j documentation. In that case you have to set the property
Logging.Configuration.client-name
to the path of your configuration file.
For more information on how to enable logging on transaction management for Spring managed Stardust runtime, please refer to the section Transaction Management of the Runtime Setup chapter of the Spring Integration guide.
A carnot.log file is generated in the folder in which the server
has been started. After installing Tomcat, you have to copy the log4j-1.2.15.jar
file, residing in the lib folder of your Stardust installation, to
your TOMCAT_HOME/common/lib folder. If you like the log file to be
created in another folder, change the property log4j.appender.default.File
in the log4j.properties accordingly.
The logger on the server side implements a wrapper around the logger
implementation used by the server. This means that the logger configuration is
done by the application server administrator. If no match is found the logger
output is written to stdout.
At the moment the following application servers are explicitly supported:
For more information on how to configure log4j on WebLogic, please refer to the Configuring log4j.properties section of the WebLogic chapter.
To prevent the automatic choice of a logging implementation you can force an implementation choice together with a configuration file by providing the following system properties with the -D option of the Java virtual machine:
| Property Name | Semantics |
|---|---|
carnot.log.type |
The type of the logger to instantiate. Supported types are:
CUSTOM,<qualifiedClassName>. Example Usage:
-Dcarnot.log.type=CUSTOM,a.b.c.d.ExampleLoggerNote that the class needs to implement a constructor with exactly one String argument. |
carnot.log.config |
The path to a configuration file (log4j only). If no configuration file is provided this way log4j bootstraps itself from the application's class-path. |
There is another system property to turn on debugging on specific categories for all non log4j loggers:
| Property Name | Semantics |
|---|---|
carnot.log.debug.filter |
A list of category names on which debugging is turned on (only for non log4j loggers) |
Example:
carnot.log.debug.filter =
org.eclipse.stardust.engine.api,org.eclipse.stardust.common
If you don't provide the carnot.log.debug.filter system
property, or if it is empty, the debug logging is disabled. If you want to
enable the debug logging for all classes (no filtering) then set the value to org.eclipse.stardust.
To enable detailed monitoring for logging of daemon activities, add the
following logger to the log4j configuration:
log4j.logger.org.eclipse.stardust.engine.core.runtime.logging.Daemon=INFO
The following example shows an entry with detailed information:
15:19:43 INFO [Thread-12 ] Daemon - Event Daemon, process event 'Event: [objectOID = 7, type = 1, handlerOID = 1]'.
You have the option to disable logging in login log entry tables for a given list of users. You can specify a list of user IDs or user OIDs via the server side property Security.LoginUsersWithoutLoginLogging. The possible values are:
Per default, the list is empty and logging on login is enabled for all users.
To disable logging on login for all users:
Security.LoginUsersWithoutLoginLogging=*
To disable logging on login for users with OIDs 102,103,104:
Security.LoginUsersWithoutLoginLogging=102,103,104
To disable logging on login for users with IDs user1, smith and miller:
Security.LoginUsersWithoutLoginLogging=user1,smith,miller
To enable logging on login for all users, leave the string empty:
Security.LoginUsersWithoutLoginLogging=