Elastic Path Commerce Development

Logging

Logging

Elastic Path Commerce uses two logging frameworks for recording activities during run time. Cortex uses Logback, while the rest of the core platform web applications use Apache log4j. Apache log4j is a configurable logging utility for Java that can output messages to a console and a log file. Cortex uses Logback as it incorporates the SLF4J (Simple Logging Facade for Java) API, provides OSGi logging, and has JMX support. Logback can also output messages to a console and a log file.

Elastic Path has made it easier to configure Logback and Log4j by exposing their configuration properties through the parent pom.xml and the .m2/settings.xml. These exposed properties allow you to increase/decrease the level of data logged and define where the log files write to. For more complex configurations, modify the logback.xml or log4j.properties configuration files as described later in the Logback and Log4j Configuration Files topic.

Overview of Logback and Log4j

As Logback is the intended successor to Log4j and both software were designed by the same developer, Logback and Log4j have similar functionality. This section describes some of the common features that both software share, such as Logging Security Levels, log file names, and how to print log messages.

Log4j and Logback write severity ratings along with log messages. Out of the box, Elastic Path Commerce has five logging severity levels:

Log Level (Severity) Description
ERROR Indicates a runtime error.
WARN Indicates a warning message.
INFO

Indicates a runtime event messages. For example, a search index build would be an INFO message.

DEBUG Indicates a debug message.
TRACE Indicates in-depth activities and inner system workings.

Log File Names

Each Web Application logs its data to a separate log file.

Web Application Log File Name
Commerce Manager ep-cm.log
Search Server ep-searchserver.log
Cortex ep-cortex.log
Batch Server ep-batch.log
Integration ep-integration.log
Application Server Log Location
Tomcat <Tomcat home>\bin\target\logs

To print a Log4j or Logback message from a Java class:

  1. Get a Logger instance in your class by calling LoggerFactory.getLogger(class)
  2. Call the Logger method that corresponds to the message's log level and include a message to print to the log file.
    Logger logger = LoggerFactory.getLogger(Example.class);
    logger.debug("Printing debug message");

Configuring Logging

Elastic Path has exposed common Logback and Log4j configuration settings through the parent pom.xml and the .m2/settings.xml.These configurations allow you to increase/decrease the data logging levels and define where the log files write to. More complex configurations are performed through the logback.xml and log4j.properties configuration files, which are describe later in this section.

Note: Log File Location

If you start your application server from Eclipse, target/logs writes to your Eclipse home directory.

How to Customize Log File Configurations

You can customize log file configurations through the parent pom.xml or through the .m2/settings.xml. For your local developer environment, you would likely configure your local settings.xml, while for your production environment, you would set your pom.xml, build the web apps, and then deploy the web apps to your production server.

For your local developer environment, you can configure your logging settings by adding the following profile to your .m2/settings.xml and setting it as an active profile:

...
<profile>
    <id>ep-log-settings</id>
    <properties>
        <ep.log.to>CONSOLE, FILE</ep.log.to>
		<ep.log.to.logback><![CDATA[<appender-ref ref="CONSOLE"/><appender-ref ref="FILE"/>]] ></ep.log.to.logback>
		<ep.log.dir>target/logs</ep.log.dir>
		<ep.log.level>INFO</ep.log.level>
    </properties>
</profile>
...
<activeProfiles>
    <activeProfile>ep-log-settings</activeProfile>

Production environments will likely not have a .m2/settings.xml file, so you will need to configure the log file settings through the parent pom.xml, build the web apps, and then deploy the web apps to your production server in order for the changes to take effect.

<!-- Logging properties -->
<ep.log.to>CONSOLE, FILE</ep.log.to> <!-- log4j -->
<ep.log.to.logback><![CDATA[<appender-ref ref="CONSOLE"/><appender-ref ref="FILE"/>]] ></ep.log.to.logback> <!-- logback -->
<ep.log.level>INFO</ep.log.level>
<!-- ep.log.dir is relative to where appserver is started -->
<ep.log.dir>target/logs</ep.log.dir>
Property Description
ep.log.to

Specifies what Log4j prints the log messages to. Possible values are CONSOLE and FILE.

ep.log.to.logback

Specifies what Logback prints the log messages to. Possible values are CONSOLE and FILE.

ep.log.dir Specifies where the log file is created. This is a relative location dependent on your application server.
ep.log.level

Specifies the logging level. Possible values are DEBUG, INFO, WARN, and ERROR.

You may need to configure additional settings for your Logback and Log4j applications or you may want to set different settings for each web application. You need to perform these configurations in the Logback and Log4j configurations files. The following describes where these files are located and provide links to the application's configuration manuals.

  • Log4J
  • Core web application's log4j.properties file in <web application root>\src\main\webapp\WEB-INF\misc. For instruction on how to can configure Log4j, refer to the Log4j configuration manual.
  • Logback
  • You can find Cortex's logback.xml in ext-cortex-webapp/src/main/filtered-resources. For instruction on configuring Logback, see the Logback configuration manual.
    Note: After modifying logback.xml, rebuild the ext-cortex-webapp module.