IFCnX 2.32 IFCnX 2.31 IFCnX 2.30 IFCnX 2.29 IFCnX 2.28 IFCnX 2.27 2.26 2.25 2.24 2.23 2.22 German English
IFCnX 2.32 IFCnX 2.31 IFCnX 2.30 IFCnX 2.29 IFCnX 2.28 IFCnX 2.27 2.26 2.25 2.24 2.23 2.22 German English

MethodServer

Einrichten des Loggings für die MethodenServer.


Prozedur

1. Erforderlich. Zur Modifikation der Logging-Einstellungen öffnen Sie die Datei

${WT_HOME}/codebase/WEB-INF/log4jMethodServer.properties.

2. Erforderlich. Nun definieren Sie einen INFO-Level-Logger für die Klassen des Java-Packages de.innoface.

log4j.logger.de.innoface=INFO,methodServerLogFile
log4j.additivity.de.innoface=false


Ergebnis

Die resultierende Datei sollte einen ähnlichen Inhalt haben:

# log4j configuration for method server processes

# Set root logger to output only ERROR and FATAL events to stdout, methodServerLogFile, and MiscLogEvents appenders
log4j.rootLogger=ERROR, stdout, methodServerLogFile, MiscLogEvents

# Define stdout appender, which sends log events to stdout
log4j.appender.stdout=wt.log4j.jmx.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-5p : %c %X{user} - %m%n

# Define methodServerLogFile appender, which sends log events to a file
log4j.appender.methodServerLogFile=wt.log4j.jmx.DailyRollingFileAppender
log4j.appender.methodServerLogFile.File=${wt.logs.dir}/${wt.manager.serviceName}-${wt.jvm.startTime.formatted.short}-${wt.jvm.id}-log4j.log
log4j.appender.methodServerLogFile.DatePattern='.'yyyy-MM-dd
log4j.appender.methodServerLogFile.layout=org.apache.log4j.PatternLayout
log4j.appender.methodServerLogFile.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c %X{user} - %m%n

# Innoface logger
log4j.logger.de.innoface=INFO,methodServerLogFile
log4j.additivity.de.innoface=false

# Define MiscLogEvents appender, which sends log events (of sufficiently high severity) to the database
log4j.appender.MiscLogEvents=wt.log4j.jmx.AsyncJDBCAppender
log4j.appender.MiscLogEvents.BatchSize=200
log4j.appender.MiscLogEvents.IncludeMDC=true
log4j.appender.MiscLogEvents.threshold=WARN
# Throttle logging of exception traces to the database (adjust threshold as needed)
log4j.appender.MiscLogEvents.ThrowableElideThreshold=15

# Log wt.log4j.jmx.AsyncJDBCAppender warnings and errors, but not to MiscLogEvents, lest we get into an infinitite loop
log4j.logger.wt.log4j.jmx.AsyncJDBCAppender=WARN, stdout, methodServerLogFile
log4j.additivity.wt.log4j.jmx.AsyncJDBCAppender=false

# Log normal method context log messages to stdout and methodServerLogFile, but not to MiscLogEvents as MethodContexts appender captures these events in more detail
log4j.logger.wt.method.MethodContextMonitor.contexts=, stdout, methodServerLogFile
log4j.additivity.wt.method.MethodContextMonitor.contexts=false

# Log normal servlet request log messages to stdout and methodServerLogFile, but not to MiscLogEvents as ServletRequests appender captures these events in more detail
log4j.logger.wt.servlet.ServletRequestMonitor.request=, stdout, methodServerLogFile
log4j.additivity.wt.servlet.ServletRequestMonitor.request=false

# Adjust the following loggers' levels from ERROR
log4j.logger.com.infoengine.jndi.DirContextMonitor.stats.summary=INFO
log4j.logger.com.infoengine.util.IeContextMonitor.stats.summary=INFO
log4j.logger.com.ptc.core.logic.LogicRepository=INFO
log4j.logger.com.ptc.core.logic.repository.server.impl.ChangeLocator=INFO
log4j.logger.com.ptc.netmarkets.util.misc.StandardNmActionService.xmlInit=INFO
log4j.logger.com.ptc.tomcat.embedded.Bootstrap=INFO
log4j.logger.com.ptc.windchill.upgrade=WARN
log4j.logger.com.ptc.windchill.uwgm.soap.impl.uwgm.UwgmTransaction=INFO
log4j.logger.org.springframework.web.servlet.DispatcherServlet=INFO
log4j.logger.wt.audit.eventinfo.truncate=WARN
log4j.logger.wt.epm.upgrade=INFO
log4j.logger.wt.epm.ecad=INFO
log4j.logger.wt.epm.util.UpdateArbortextExtendedDocTypeUtility=INFO
log4j.logger.wt.fc.jmx.TopSQLMonitor.sqlStats.current=DEBUG
log4j.logger.wt.fc.jmx.TopSQLMonitor.sqlStats.matching.sql=DEBUG
log4j.logger.wt.index.BulkIndexHelper=INFO
log4j.logger.wt.jmx.core.mbeans.Dumper.heapdumps=INFO
log4j.logger.wt.jmx.core.mbeans.Dumper.script.stdout=INFO
log4j.logger.wt.jmx.core.mbeans.PeriodicStackLoggingDelegate=INFO
log4j.logger.wt.jmx.core.mbeans.ProcessCpuTimeMonitor=WARN
log4j.logger.wt.jmx.core.mbeans.ScriptActionDelegateFactory.script.stdout=INFO
log4j.logger.wt.load.ecad=INFO
log4j.logger.wt.log4j.jmx.AsyncJDBCAppender.connection=OFF
log4j.logger.wt.manager.jmx.ServerManagerMonitor=INFO
log4j.logger.wt.method.client=WARN
log4j.logger.wt.method.server=WARN
log4j.logger.wt.method.server.shutdown=INFO
log4j.logger.wt.method.server.startup=INFO
log4j.logger.wt.method.MemoryUsageRedirectStrategy=INFO
log4j.logger.wt.method.MethodContext.contextMBean.start=OFF
log4j.logger.wt.pds.queryCancel=WARN
log4j.logger.wt.phonehome.queue.AbstractPhoneHomeQueueEntry=INFO
log4j.logger.wt.pds.passwordexpiry.PasswordExpiryWarningService=INFO
log4j.logger.wt.pom.properties=INFO
log4j.logger.wt.servlet.ServletRequestMonitor.requestMBean.start=OFF
log4j.logger.wt.session.SessionUsers.ICache=WARN
log4j.logger.wt.session.SessionUsers.keyEvents=WARN
log4j.logger.wt.system.err=INFO
log4j.logger.wt.system.out=INFO
log4j.logger.wt.util.WrappedSocket=WARN
log4j.logger.wt.wvs.workeragent.StandardCadAgentService=INFO
log4j.logger.wt.licenseusage.licensing=INFO

# Do not send periodic stack logger output to stdout
log4j.logger.wt.jmx.core.mbeans.PeriodicStackLoggingDelegate=, methodServerLogFile, MiscLogEvents
log4j.additivity.wt.jmx.core.mbeans.PeriodicStackLoggingDelegate=false

# Limit com.infoengine.log* loggers to outputting to methodServerLogFile and MiscLogEvents
log4j.logger.com.infoengine.log=, methodServerLogFile, MiscLogEvents
log4j.additivity.com.infoengine.log=false

# Limit bulk indexing log messages to a separate file and MiscLogEvents
log4j.appender.BITLogFile=wt.log4j.jmx.DailyRollingFileAppender
log4j.appender.BITLogFile.File=${wt.logs.dir}/BulkIndexTool-${wt.jvm.startTime.formatted.short}-${wt.jvm.id}-log4j.log
log4j.appender.BITLogFile.DatePattern='.'yyyy-MM-dd
log4j.appender.BITLogFile.layout=org.apache.log4j.PatternLayout
log4j.appender.BITLogFile.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c - %m%n
log4j.logger.wt.index.BulkIndexHelper=, BITLogFile, MiscLogEvents
log4j.additivity.wt.index.BulkIndexHelper=false

# Define persistenceLogFile appender
log4j.appender.persistenceLogFile=wt.log4j.jmx.DailyRollingFileAppender
log4j.appender.persistenceLogFile.File=${wt.logs.dir}/Persistence-${wt.jvm.startTime.formatted.short}-${wt.jvm.id}-log4j.log
log4j.appender.persistenceLogFile.DatePattern='.'yyyy-MM-dd
log4j.appender.persistenceLogFile.layout=org.apache.log4j.PatternLayout
log4j.appender.persistenceLogFile.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c - %m%n

# Uncomment next lines to log SQL to a separate file and MiscLogEvents
#log4j.logger.wt.pom.sql=, persistenceLogFile, MiscLogEvents
#log4j.additivity.wt.pom.sql=false

# Define epmPerformanceLogFile appender, which sends CAD-related operations perfermance log events to a file
log4j.appender.epmPerformanceLogFile=wt.log4j.jmx.DailyRollingFileAppender
log4j.appender.epmPerformanceLogFile.file=${wt.logs.dir}/EPMPerf-${wt.jvm.id}.log
log4j.appender.epmPerformanceLogFile.DatePattern='.'yyyy-MM-dd
log4j.appender.epmPerformanceLogFile.layout=wt.log4j.jmx.TSVLayout
log4j.appender.epmPerformanceLogFile.layout.HeaderFile=${wt.logs.dir}/EPMPerf-${wt.jvm.id}.log
log4j.appender.epmPerformanceLogFile.layout.DateFormat=yyyy-MM-dd HH:mm:ss z

# Log the CAD operation performance information; logging is enabled only when level is set to TRACE.
#log4j.logger.wt.epm.util.log.perf=TRACE,epmPerformanceLogFile
#log4j.additivity.wt.epm.util.log.perf=false

# Log immutable method server process information to the database
log4j.appender.MethodServerInfo=wt.log4j.jmx.AsyncJDBCAppender
log4j.appender.MethodServerInfo.RendererMap=JVMArguments\=wt.log4j.jmx.RenderStringArrayAsMultiLineString
# Send wt.methodServer.info log events to stdout, methodServerLogFile, and MethodServerInfo appenders, but not to MiscLogEvents appender
log4j.logger.wt.methodServer.info=, stdout, methodServerLogFile, MethodServerInfo
log4j.additivity.wt.methodServer.info=false

# Log periodic method server health summary information to the database
log4j.appender.MSHealthStats=wt.log4j.jmx.AsyncJDBCAppender
log4j.appender.MSHealthStats.ItemsToCollectionExpand=GarbageCollectors,GCTime,GCCount
# Send wt.summary.general log events to stdout, methodServerLogFile, and MSHealthStats appenders, but not to MiscLogEvents appender
log4j.logger.wt.summary.general=, stdout, methodServerLogFile, MSHealthStats
log4j.additivity.wt.summary.general=false

# Log JMX Notifications to appropriate database table
log4j.appender.JmxNotifications=wt.log4j.jmx.AsyncJDBCAppender
log4j.appender.JmxNotifications.threshold=INFO
# Send wt.jmx.notif log events to stdout, methodServerLogFile, and JmxNotifications appenders, but not to MiscLogEvents appender
log4j.logger.wt.jmx.notif=, stdout, methodServerLogFile, JmxNotifications
log4j.additivity.wt.jmx.notif=false

# Log periodic servlet request summary statistics to the database
log4j.appender.ServletRequestStats=wt.log4j.jmx.AsyncJDBCAppender
# Send wt.servlet.ServletRequestMonitor.stats.summary log events to stdout, methodServerLogFile, and ServletRequestStats appenders, but not to MiscLogEvents appender
log4j.logger.wt.servlet.ServletRequestMonitor.stats.summary=INFO, stdout, methodServerLogFile, ServletRequestStats
log4j.additivity.wt.servlet.ServletRequestMonitor.stats.summary=false

# Log periodic servlet session summary statistics to the database
log4j.appender.ServletSessionStats=wt.log4j.jmx.AsyncJDBCAppender
# Send wt.servlet.SessionMonitor.stats.summary log events to stdout, methodServerLogFile, and ServletSessionStats appenders, but not to MiscLogEvents appender
log4j.logger.wt.servlet.SessionMonitor.stats.summary=INFO, stdout, methodServerLogFile, ServletSessionStats
log4j.additivity.wt.servlet.SessionMonitor.stats.summary=false

# Log periodic method context summary statistics to the database
log4j.appender.MethodContextStats=wt.log4j.jmx.AsyncJDBCAppender
log4j.appender.MethodContextStats.ColumnMap=ContextJDBCConnWaitSecondsAverage\=ContextJDBCConnWaitSecondsAvg,PercentageOfContextTimeInJDBCCalls\=PercOfContextTimeInJDBCCalls,PercentageOfContextTimeInJDBCConnWait\=PercOfContextTimeInJDBCConWait,PercentageOfContextTimeInJNDICalls\=PercOfContextTimeInJNDICalls,PercentageOfContextTimeInCORBACalls\=PercOfContextTimeInCORBACalls,AverageRemoteCacheCallsPerContext\=AverageRCacheCallsPerContext,PercentageOfContextTimeInRemoteCacheCalls\=PercOfContextTimeInRCacheCalls
# Send wt.method.MethodContextMonitor.stats.summary log events to stdout, methodServerLogFile, and MethodContextStats appenders, but not to MiscLogEvents appender
log4j.logger.wt.method.MethodContextMonitor.stats.summary=INFO, stdout, methodServerLogFile, MethodContextStats
log4j.additivity.wt.method.MethodContextMonitor.stats.summary=false

# Log raw servlet request statistics to appropriate database table (and nowhere else)
log4j.appender.RawServletRequestStats=wt.log4j.jmx.AsyncJDBCAppender
log4j.appender.RawServletRequestStats.BatchSize=500
log4j.appender.RawServletRequestStats.IncludeMDC=true
log4j.logger.wt.servlet.ServletRequestMonitor.rawStatistics=INFO, RawServletRequestStats
log4j.additivity.wt.servlet.ServletRequestMonitor.rawStatistics=false

# Log raw method context statistics to appropriate database table (and nowhere else)
log4j.appender.RawMethodContextStats=wt.log4j.jmx.AsyncJDBCAppender
log4j.appender.RawMethodContextStats.BatchSize=500
log4j.appender.RawMethodContextStats.IncludeMDC=true
log4j.logger.wt.method.MethodContextMonitor.rawStatistics=INFO, RawMethodContextStats
log4j.additivity.wt.method.MethodContextMonitor.rawStatistics=false

# Log sampled servlet requests to appropriate database table (and nowhere else)
log4j.appender.SampledServletRequests=wt.servlet.JDBCRequestAppender
log4j.appender.SampledServletRequests.BatchSize=200
log4j.appender.SampledServletRequests.IncludeMDC=true
log4j.appender.SampledServletRequests.DynamicMBeanAttrsToInclude=ThreadName,StackTrace,ContentBytesRead,ContentCharsRead,UncompressedBytesOutput,ContentBytesOutput,ContentCharsOutput,BytesAllocated,ThrottledSeconds,BeingThrottled,BlockedCount,BlockedSeconds,WaitedCount,WaitedSeconds,ElapsedCpuSeconds,ElapsedSeconds,StartTime,Id,ThreadId,RemoteUser,RemoteAddr,ContextPath,RequestURI,QueryString,RequestParameters,Method
log4j.appender.SampledServletRequests.RendererMap=StackTrace\=wt.log4j.jmx.SimplifiedStackTraceRenderer
log4j.logger.wt.servlet.ServletRequestMonitor.activeRequest=WARN, SampledServletRequests
log4j.additivity.wt.servlet.ServletRequestMonitor.activeRequest=false

# Log sampled method contexts to appropriate database table (and nowhere else)
log4j.appender.SampledMethodContexts=wt.log4j.jmx.AsyncJDBCAppender
log4j.appender.SampledMethodContexts.BatchSize=200
log4j.appender.SampledMethodContexts.IncludeMDC=true
log4j.appender.SampledMethodContexts.DynamicMBeanAttrsToInclude=ThreadName,AccessLogDetail,StackTrace,CurrentJDBCDatabaseSessionId,BlockingCallInfo,JNDICalls,ElapsedJNDISeconds,CORBACalls,ElapsedCORBASeconds,JDBCQueryCalls,ElapsedJDBCSeconds,JDBCConnectionWaitTimeSeconds,RemoteCacheCallReport,RemoteCacheCalls,ElapsedRemoteCacheSeconds,BlockedCount,BlockedSeconds,WaitedCount,WaitedSeconds,ElapsedTotalCpuSeconds,ElapsedTotalSeconds,BytesAllocated,StartTime,Id,ParentId,ThreadId,RMICall,RemoteAddr,ServletRequestId,UserName,TargetClass,TargetMethod,Redirects
log4j.appender.SampledMethodContexts.ColumnMap=BlockingCallInfo.type\=BlockingCallType,BlockingCallInfo.elapsedSeconds\=BlockingCallElapsedSeconds,BlockingCallInfo.description\=BlockingCallDescription,BlockingCallInfo.id\=BlockingCallId
log4j.appender.SampledMethodContexts.RendererMap=StackTrace\=wt.log4j.jmx.SimplifiedStackTraceRenderer,RemoteCacheCallReport\=wt.log4j.jmx.RenderStringArrayAsMultiLineString
log4j.logger.wt.method.MethodContextMonitor.activeContext=WARN, SampledMethodContexts
log4j.additivity.wt.method.MethodContextMonitor.activeContext=false

# Log servlet request completions warnings and errors to the database (and nowhere else)
log4j.appender.ServletRequests=wt.servlet.JDBCRequestAppender
log4j.appender.ServletRequests.BatchSize=200
log4j.appender.ServletRequests.DynamicMBeanAttrsToInclude=StartTime,Id,ThreadId,RemoteUser,RemoteAddr,ContextPath,RequestURI,QueryString,RequestParameters,RequestHeaders,RequestedSessionId,SessionId,Method,Protocol,StatusCode,ContentBytesRead,ContentCharsRead,UncompressedBytesOutput,ContentBytesOutput,ContentCharsOutput,BytesAllocated,ThrottledSeconds,BlockedCount,BlockedSeconds,WaitedCount,WaitedSeconds,ElapsedCpuSeconds,ElapsedSeconds
log4j.appender.ServletRequests.RendererMap=RequestHeaders\=wt.log4j.jmx.RenderStringArrayAsMultiLineString
log4j.logger.wt.servlet.ServletRequestMonitor.requestMBean.finish=WARN, ServletRequests
log4j.additivity.wt.servlet.ServletRequestMonitor.requestMBean.finish=false

# Log method context completions warnings and errors to the database (and nowhere else)
log4j.appender.MethodContexts=wt.log4j.jmx.AsyncJDBCAppender
log4j.appender.MethodContexts.BatchSize=200
log4j.appender.MethodContexts.DynamicMBeanAttrsToInclude=StartTime,Id,ParentId,ThreadId,RMICall,RemoteAddr,ServletRequestId,UserName,TargetClass,TargetMethod,AccessLogDetail,Redirects,Redirected,BytesAllocated,JNDICalls,ElapsedJNDISeconds,CORBACalls,ElapsedCORBASeconds,JDBCQueryCalls,ElapsedJDBCSeconds,JDBCConnectionWaitTimeSeconds,RemoteCacheCallReport,RemoteCacheCalls,ElapsedRemoteCacheSeconds,BlockedCount,BlockedSeconds,WaitedCount,WaitedSeconds,ElapsedTotalCpuSeconds,ElapsedTotalSeconds
log4j.appender.MethodContexts.RendererMap=RemoteCacheCallReport\=wt.log4j.jmx.RenderStringArrayAsMultiLineString
log4j.logger.wt.method.MethodContext.contextMBean.finish=WARN, MethodContexts
log4j.additivity.wt.method.MethodContext.contextMBean.finish=false

# Log log4javascript messages to database
log4j.appender.Log4JavascriptEvents=wt.log4j.jmx.AsyncJDBCAppender
log4j.appender.Log4JavascriptEvents.BatchSize=200
log4j.appender.Log4JavascriptEvents.IncludeMDC=true
# Only record ERROR and FATAL messages to the database by default, edit next line to change this as desired
log4j.appender.Log4JavascriptEvents.threshold=ERROR
log4j.logger.wt.log4javascript=OFF, stdout, methodServerLogFile, Log4JavascriptEvents
log4j.additivity.wt.log4javascript=false

# Log PTC.performance log4javascript messages to a separate file
log4j.appender.ClientPerfLogFile=wt.log4j.jmx.DailyRollingFileAppender
log4j.appender.ClientPerfLogFile.File=${wt.logs.dir}/ClientPerf-${wt.jvm.startTime.formatted.short}-${wt.jvm.id}-log4j.log
log4j.appender.ClientPerfLogFile.DatePattern='.'yyyy-MM-dd
log4j.appender.ClientPerfLogFile.layout=org.apache.log4j.PatternLayout
log4j.appender.ClientPerfLogFile.layout.ConversionPattern=%-5p : %X{user} - %m%n
log4j.logger.wt.log4javascript.PTC.performance=ALL, stdout, ClientPerfLogFile, Log4JavascriptEvents
log4j.additivity.wt.log4javascript.PTC.performance=false

# Log info-level periodic interval top SQL stats to database
log4j.appender.TopSQLStats=wt.log4j.jmx.AsyncJDBCAppender
log4j.appender.TopSQLStats.BatchSize=200
log4j.appender.TopSQLStats.RendererMap=StackTrace\=wt.log4j.jmx.SimplifiedStackTraceRenderer
log4j.appender.TopSQLStats.threshold=INFO
# Log forced periodic interval top SQL stats to stdout, methodServerLogFile, and TopSQLStats appenders, but not to MiscLogEvents appender
log4j.logger.wt.fc.jmx.TopSQLMonitor.sqlStats.interval.forced=DEBUG, stdout, methodServerLogFile, TopSQLStats
log4j.additivity.wt.fc.jmx.TopSQLMonitor.sqlStats.interval.forced=false
# Log quiet (background) top SQL stats to TopSQLStats and no other appenders
log4j.logger.wt.fc.jmx.TopSQLMonitor.sqlStats.interval.quiet=INFO, TopSQLStats
log4j.additivity.wt.fc.jmx.TopSQLMonitor.sqlStats.interval.quiet=false

# Log user agent information to the database (only)
log4j.appender.UserAgentInfo=wt.log4j.jmx.AsyncJDBCAppender
log4j.appender.UserAgentInfo.BatchSize=500
log4j.logger.wt.servlet.UserAgentTracker=INFO, UserAgentInfo
log4j.additivity.wt.servlet.UserAgentTracker=false

# Log remote cache calls to database
# Note: nothing will be logged for this logger unless its verbosity level is INFO or higher; level is set to WARN by default
log4j.appender.RemoteCacheServerCalls=wt.log4j.jmx.AsyncJDBCAppender
log4j.appender.RemoteCacheServerCalls.BatchSize=500
log4j.appender.RemoteCacheServerCalls.IncludeMDC=true
log4j.appender.RemoteCacheServerCalls.RendererMap=StackTrace\=wt.log4j.jmx.RenderStringArrayAsMultiLineString
# Send wt.cache.client.timing log events to stdout, methodServerLogFile, and RemoteCacheServerCalls appenders, but not to MiscLogEvents appender
log4j.logger.wt.cache.client.timing=WARN, stdout, methodServerLogFile, RemoteCacheServerCalls
log4j.additivity.wt.cache.client.timing=false

# Configure RmiPerfData appender; sends timing data on incoming RMI calls to RmiPerfData table
log4j.appender.RmiPerfData=wt.log4j.jmx.AsyncJDBCAppender
log4j.appender.RmiPerfData.BatchSize=500
# Disable RmiPerfData appender by default; comment out this line or change threshold to INFO to enable
log4j.appender.RmiPerfData.threshold=WARN

# Configure IncomingRmiStats appender
# Collects RMI statistics for viewing with wt.rmi.jmx.IncomingRmiStatsMonitor MBean; must instantiate this MBean (via MBean Loader) to access results
log4j.appender.IncomingRmiStats=wt.rmi.jmx.IncomingRmiStatsAppender
# Disable IncomingRmiStats appender by default; set threshold to INFO to enable
log4j.appender.IncomingRmiStats.threshold=WARN

# Send wt.rmi.perf log events only to RmiPerfData and IncomingRmiStats appenders
# Note that by default all wt.rmi.perf logging is disabled; must use at least INFO verbosity to obtain output; also see comments on the appenders
log4j.logger.wt.rmi.perf=OFF, RmiPerfData, IncomingRmiStats
log4j.additivity.wt.rmi.perf=false

# Log structured RMI histogram data to appropriate database table (only) -- uncomment and configure an IncomingRmiStatsMonitor MBean to activate
# Note: nothing will be logged for this logger unless its verbosity level is INFO or higher
#log4j.appender.RmiHistograms=wt.log4j.jmx.AsyncJDBCAppender
#log4j.appender.RmiHistograms.BatchSize=500
#log4j.logger.wt.rmi.jmx.IncomingRmiStatsMonitor.structuredData=INFO, RmiHistograms
#log4j.additivity.wt.rmi.jmx.IncomingRmiStatsMonitor.structuredData=false

# Log structured request histogram data to appropriate database table (only) -- uncomment and configure a RequestHistogrammer MBean to activate
# Note: nothing will be logged for this logger unless its verbosity level is INFO or higher
#log4j.appender.RequestHistograms=wt.log4j.jmx.AsyncJDBCAppender
#log4j.appender.RequestHistograms.BatchSize=500
#log4j.logger.wt.servlet.RequestHistogrammer.structuredData=INFO, RequestHistograms
#log4j.additivity.wt.servlet.RequestHistogrammer.structuredData=false

# Define socket appender
# (uncomment, adjust values, and add to appropriate logger configurations to use)
#log4j.appender.socket=org.apache.log4j.net.SocketAppender
#log4j.appender.socket.port=4560
#log4j.appender.socket.remoteHost=localhost
#log4j.appender.socket.application=${wt.manager.serviceName}-${wt.jvm.id}

# Limit Classification Structure Indexing log messages to a separate file
log4j.appender.CLFStructureLogFile=wt.log4j.jmx.DailyRollingFileAppender
log4j.appender.CLFStructureLogFile.File=${wt.logs.dir}/UpdateClassificationStructure-${wt.jvm.startTime.formatted.short}-${wt.jvm.id}-log4j.log
log4j.appender.CLFStructureLogFile.DatePattern='.'yyyy-MM-dd
log4j.appender.CLFStructureLogFile.layout=org.apache.log4j.PatternLayout
log4j.appender.CLFStructureLogFile.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c - %m%n
log4j.logger.com.ptc.windchill.csm.struct.UpdateClassificationStructure=, CLFStructureLogFile, MiscLogEvents
log4j.additivity.com.ptc.windchill.csm.struct.UpdateClassificationStructure=false

# Log cache statistics to CacheStatistics table (and nowhere else)
log4j.appender.CacheStatistics=wt.log4j.jmx.AsyncJDBCAppender
log4j.appender.CacheStatistics.BatchSize=500
log4j.appender.CacheStatistics.DynamicMBeanAttrsToInclude=Uptime,RestartNumber,CacheHits,CacheOverflows,CacheMisses,CacheEntryCount,Name,CacheSize
log4j.logger.wt.cache.ICacheManagerMBean.mbean=INFO, CacheStatistics
log4j.additivity.wt.cache.ICacheManagerMBean.mbean=false

# Reporting for the UpdateSecurityLabels tool
log4j.appender.UpdateSecurityLabelsReport=wt.access.UpdateSLsReportAppender
log4j.appender.UpdateSecurityLabelsReport.File=${wt.logs.dir}/CLT_Report-%time-%jid-%tid.tsv
log4j.additivity.wt.access.UpdateSecurityLabelsReport=false
log4j.logger.wt.access.UpdateSecurityLabelsReport=INFO,UpdateSecurityLabelsReport