Configuring Content Engine API client logging

IBM Content Management Interoperability Services for FileNet® Content Manager (IBM ECM CMIS) bundles and performs most content operations through the IBM FileNet Content Engine Java™ API. You might need to configure Content Engine API client logging when you need to troubleshoot performance problems related to Content Engine.

About this task

The API layer has its own logging structure, that uses the Apache Log4J standard library. Therefore, the server logs might show stack traces for Content Engine-related errors that occur under normal operation, no matter what the application log settings are.

To configure Content Engine API client logging for IBM ECM CMIS:

Procedure

  1. Create a log4j.properties file.
  2. Insert the log4j.properties file into the classes directory of the deployed application.

    By default, the classes directory is located in the following WebSphere® Application Server directory:

    Operating system Default Directory
    AIX® /usr/IBM/WebSphere/AppServer/profile_name/installedApps/cell_name/fncmis.ear/fncmis.war/WEB-INF/classes
    Linux® /opt/IBM/WebSphere/AppServer/profile_name/installedApps/cell_name/fncmis.ear/fncmis.war/WEB-INF/classes
    Windows C:\Program Files\IBM\WebSphere\AppServer\profiles\profile_name\installedApps\cell_name\fncmis.ear\fncmis.war\WEB-INF\classes
  3. Restart the IBM ECM CMIS application in the WebSphere Application Server administrative console to distribute the changes to the deployed application.

Results

After you deploy the application, the Content Engine API client logs are created in the directory that was specified in the log4j.properties file.

Example

The following code is a sample log4j.properties file.
#############################################################
# Root logger
#############################################################
log4j.rootLogger=off, FileNetNull Appender

#############################################################
# Appenders
#############################################################
# === FileNetNullAppender
log4j.appender.FileNetNullAppender=org.apache.log4j.varia.NullAppender

# === FileNetConsoleAppender
log4j.appender.FileNetConsoleAppender=org.apache.log4j.ConsoleAppender
log4j.appender.FileNetConsoleAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.FileNetConsoleAppender.layout.ConversionPattern=
%d %5p [%t] - %m\r\n

#=== FileNetErrorAppender
log4j.appender.FileNetErrorAppender=org.apache.log4j.FileAppender
log4j.appender.FileNetErrorAppender.File=logs/server1/fncmis_api_error.log
log4j.appender.FileNetErrorAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.FileNetErrorAppender.layout.ConversionPattern=
%d %5p [%t] - %m\r\n

#=== FileNetTraceAppender
log4j.appender.FileNetTraceAppender=org.apache.log4j.FileAppender
log4j.appender.FileNetTraceAppender.File=logs/server1/fncmis_api_trace.log
# This is the layout that the TraceLoggingConfiguration 
framework on the server uses.
# To use this layout , jace.jar must be present in the classpath.
#log4j.appender.FileNetTraceAppender.layout=com.filenet.apiimpl.util.TraceLayout
# Comment out the following lines if using the FileNet TraceLayout
log4j.appender.FileNetTraceAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.FileNetTraceAppender.layout.ConversionPattern=
%d %5p [%t] - %m\r\n

#=== FileNetErrorRollingAppender
log4j.appender.FileNetErrorRollingAppender=org.apache.log4j.RollingFileAppender
log4j.appender.FileNetErrorRollingAppender.File=logs/server1/fncmis_api_error.log
log4j.appender.FileNetErrorRollingAppender.MaxFileSize=100MB
log4j.appender.FileNetErrorRollingAppender.MaxBackupIndex=1
log4j.appender.FileNetErrorRollingAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.FileNetErrorRollingAppender.layout.ConversionPattern=
%d %5p [%t] - %m\r\n

#=== FileNetTraceRollingAppender
log4j.appender.FileNetTraceRollingAppender=org.apache.log4j.RollingFileAppender
log4j.appender.FileNetTraceRollingAppender.File=logs/server1/fncmis_api_trace.log
log4j.appender.FileNetTraceRollingAppender.MaxFileSize=100MB
log4j.appender.FileNetTraceRollingAppender.MaxBackupIndex=1
# This is the layout that the TraceLoggingConfiguration 
framework on the server uses.
# To use this layout, jace.jar must be present in the classpath.
#log4j.appender.FileNetTraceRollingAppender.layout=com.filenet.apiimpl.util.TraceLayout
# Comment out the following lines if using the FileNet TraceLayout
log4j.appender.FileNetTraceRollingAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.FileNetTraceRollingAppender.layout.ConversionPattern=
%d %5p [%t] - %m\r\n

#############################################################
# Error Loggers:
#
# Set log level to either one of off/fatal/error/warn/info.
# Child logger's value overwrites parent logger's value.
# If a logger is not specified, it inherents its value from its parent.
# By default, error logging is set to level ERROR.
#############################################################
# Don't comment out the following line since it has appenders.
log4j.logger.filenet_error = error, FileNetConsoleAppender, 
FileNetErrorRollingAppender, FileNetTraceRollingAppender

#=== SubSystem: api
# Uncomment to set error logging level to WARN.
#log4j.logger.filenet_error.api = warn

############################################################
# Trace loggers:
#
# Setting log level to "off" will turn off trace logging.
# Setting log level to "debug" will turn on trace logging.
#
# Child logger's value overwrites parent logger's value.
# If a logger is not specified, it inherents its value from its parent.
# By default, trace logging is off.
#
# The general message trace logging has a hierarchy 
# of three detail levels represented with
# hierarchical logger names:
#    ...detail.moderate.summary  -- Enables a summary level of tracing
#    ...detail.moderate          -- Enables a moderate level of tracing
#    ...detail                   -- Enables the most detailed level of tracing
#
# Uncomment corresponding lines to turn tracing on.  To enable trace logging
# for all subsystems and all flags, set the level of the filenet_tracing
# logger to debug.
#
# Here are the trace flags used for each sub system.  
# For message tracing, enable the line
# corresponding to the desired detail level.
# log4j.logger.filenet_tracing.<SubSystem>.timer              = debug  
# log4j.logger.filenet_tracing.<SubSystem>.detail.moderate.summary = debug  
# log4j.logger.filenet_tracing.<SubSystem>.detail.moderate    = debug 
# log4j.logger.filenet_tracing.<SubSystem>.detail             = debug 
#  
# For example:  
# log4j.logger.filenet_tracing.api.detail.moderate = debug  
#############################################################
# Don't comment out the following line since it includes an appender. 
log4j.logger.filenet_tracing = off, FileNetTraceRollingAppender  

#=== SubSystem: api 
# Uncomment one or more lines to enable tracing. 
log4j.logger.filenet_tracing.api                          = debug 
log4j.logger.filenet_tracing.api.timer                    = debug 
# Remove the comment corresponding to the desired detail level 
log4j.logger.filenet_tracing.api.detail.moderate.summary  = debug 
#log4j.logger.filenet_tracing.api.detail.moderate          = debug 
#log4j.logger.filenet_tracing.api.detail                   = debug