IBM Support

Adding a 3rd party log4j appender in TDI environment

Troubleshooting


Problem

When trying to add a 3rd party appender (e.g. biz.minaret.log4j.DateFileAppender) in TDI environment, below error is thrown at server startup: "ERROR Could not instantiate appender named "Default".

Symptom

TDI Server startup shows following messages:

Fri Aug 26 16:24:21 CST 2011 CTGDIC076I Local development server launched ... Fri Aug 26 16:24:22 CST 2011 .


Fri Aug 26 16:24:22 CST 2011 log4j:ERROR Could not instantiate class biz.minaret.log4j.DatedFileAppender].
Fri Aug 26 16:24:22 CST 2011 java.lang.ClassNotFoundException:
biz. minaret.log4j.DatedFileAppender
Fri Aug 26 16:24:22 CST 2011 at java.lang.Class.forName(Class.java:130)
Fri Aug 26 16:24:22 CST 2011 at org.apache.log4j.helpers.Loader.
loadClass(Loader.java:179)
Fri Aug 26 16:24:22 CST 2011 at org.apache.log4j.helpers.
OptionConverter.instantiateByClassName(OptionConverter.java:320)
Fri Aug 26 16:24:22 CST 2011 at org.apache.log4j.helpers.
OptionConverter.instantiateByKey(OptionConverter.java:121)
Fri Aug 26 16:24:22 CST 2011 at org.apache.log4j.PropertyConfigurator.
parseAppender(PropertyConfigurator.java:664)
Fri Aug 26 16:24:22 CST 2011 at org.apache.log4j.PropertyConfigurator.
parseCategory(PropertyConfigurator.java:647)
Fri Aug 26 16:24:22 CST 2011 at org.apache.log4j.PropertyConfigurator.
configureRootCategory(PropertyConfigurator.java:544)
Fri Aug 26 16:24:22 CST 2011 at org.apache.log4j.PropertyConfigurator.
doConfigure(PropertyConfigurator.java:440)
Fri Aug 26 16:24:22 CST 2011 at org.apache.log4j.PropertyConfigurator.
doConfigure(PropertyConfigurator.java:476)
Fri Aug 26 16:24:22 CST 2011 at org.apache.log4j.helpers.
OptionConverter.selectAndConfigure(OptionConverter.java:471)
Fri Aug 26 16:24:22 CST 2011 at org.apache.log4j.LogManager.<clinit>
(LogManager.java:125)
Fri Aug 26 16:24:22 CST 2011 at java.lang.J9VMInternals.initializeImpl
(Native Method)
Fri Aug 26 16:24:22 CST 2011 at java.lang.J9VMInternals.initialize
(J9VMInternals.java:196)
Fri Aug 26 16:24:22 CST 2011 at org.apache.log4j.Logger.getLogger
(Logger.java:105)
Fri Aug 26 16:24:22 CST 2011 at com.ibm.di.loader.IDILoader.
locateInstallDir(IDILoader.java:220)
Fri Aug 26 16:24:22 CST 2011 at com.ibm.di.loader.IDILoader.run
(IDILoader.java:510)
Fri Aug 26 16:24:22 CST 2011 at com.ibm.di.loader.IDILoader.main
(IDILoader.java:180)
Fri Aug 26 16:24:22 CST 2011 log4j:ERROR Could not instantiate appender
named "Default".

Cause

TDI initializes Log4j before we have had a change to set up loader which looks through the jars directory, and hence we get exception "java.lang.ClassNotFoundException"

Environment

Windows, TDI 7.0, TDI 7.1

Resolving The Problem


1. Ensure that 3rd party jar file is present at TDI_HOME_DIR%\jars.
2. Modify "ibmdisrv.bat" to include the jar (e.g. "datedFileAppender-1.0.2.jar") in classpath like below:

"%TDI_JAVA_PROGRAM%" -classpath "%TDI_HOME_DIR%\jars/log4j-datedFileAppender-1.0.2.jar;%TDI_HOME_DIR%\IDILoader.jar" %ENV_VARIABLES% com.ibm.di.loader.IDILoader com.ibm.di.server.RS %*
3. Restart TDI.

In case we apply latest fix pack, changes made to "ibmdisrv.bat" will only be preserved, if respective fix pack does not have any modifications in "ibmdisrv.bat".

[{"Product":{"code":"SSCQGF","label":"Tivoli Directory Integrator"},"Business Unit":{"code":"BU008","label":"Security"},"Component":"General","Platform":[{"code":"PF033","label":"Windows"}],"Version":"7.0","Edition":"","Line of Business":{"code":"LOB24","label":"Security Software"}}]

Historical Number

15872;999;616

Product Synonym

ITDI;TDI;Tivoli Directory Integrator

Document Information

Modified date:
16 June 2018

UID

swg21515869