In the standard Oracle Commerce Platform configuration, all components are directed to send their logging events to a single LogQueue
component. This is specified in the /GLOBAL.properties
file, which you can view in the Configuration tab of the Component Editor of any Nucleus component:
logListeners=\ atg/dynamo/service/logging/LogQueue,\ atg/dynamo/service/logging/ScreenLog
All components also direct their output to the ScreenLog
component, causing all messages to appear on the console. This is useful for debugging at development time, and should be removed at production time.
The LogQueue
component queues log events, preventing the handling of those events from impacting the throughput of the rest of the system. The LogQueue
feeds its output to a LogDispatch
component:
logListeners=LogDispatch
The LogDispatch
separates the error, warning, info, and debug log events and directs them to separate components. Any events that do not match the above classes are sent to the info logs:
logEvents=\ atg.nucleus.logging.InfoLogEvent,\ atg.nucleus.logging.WarningLogEvent,\ atg.nucleus.logging.ErrorLogEvent,\ atg.nucleus.logging.DebugLogEvent,\ atg.nucleus.logging.LogEvent logDestinations=\ InfoLog,\ WarningLog,\ ErrorLog,\ DebugLog,\ InfoLog
Each of the destination logs (InfoLog
, WarningLog
, ErrorLog
, DebugLog
) is a RotatingFileLogger
. Each log is stored in a separate file in the ./logs
directory, and is archived at 1am every Sunday into the ./logs/archives
directory:
$class=atg.nucleus.logging.RotatingFileLogger logFilePath=./logs logFileName=info.log scheduler=../Scheduler schedule=calendar * . 1 1 0 logArchivePath=./logs/archives maximumArchiveCount=20 archiveCompressed=true
As you can see, the entire Oracle Commerce Platform logging system is completely defined using standard Nucleus components and configuration files. This means that you can change the logging configurations and procedures by changing configuration files, usually without writing any Java code.