Logging in Infinity Process Platform

An elaborate logging feature has been implemented in Infinity Process Platform characterized by:

The standard Infinity Process Platform 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.

Configuration

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 Infinity Process Platform tries to use the existing application server logging implementation. In this case, configuration is a matter of application server configuration.

Client Side

Infinity Process Platform 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. %Infinity Process Platform 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}
%-5p [%t] (%x) %c{2} - %m%n
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 Infinity Process Platform runtime, please refer to the section Transaction Management of the Runtime Setup chapter of the Spring Integration guide.

Server Side

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 Infinity Process Platform 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:
  • log4j
  • weblogic
  • stdout
  • noop
It also supports loading custom implementations of org.eclipse.stardust.common.log.Logger by specifying a class in the following format: CUSTOM,<qualifiedClassName>. Example Usage:
-Dcarnot.log.type=CUSTOM,a.b.c.d.ExampleLogger
Note 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.

Enabling detailed Monitoring for Daemon Activities

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]'.

Disabling Logging Log Entries for specific Users

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.

Examples

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 loggin 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=