DP logging properties file

Data Processing has a default Log4j configuration file that sets its logging properties.

The file is named log4j.properties and is located in the $BDD_HOME/dataprocessing/edp_cli/config directory.

The default version of the file looks like the following example:
############################################################
# Global properties
############################################################

log4j.rootLogger = INFO, console, edpMain

############################################################
# Handler specific properties.
############################################################

log4j.appender.console = org.apache.log4j.ConsoleAppender

############################################################
# EdpODPFormatterAppender is a custom log4j appender that gives two new optional 
# variables that can be added to the log4j.appender.*.Path property and are 
# filled in at runtime:
# %timestamp  - provides a timestamp in the format: yyyyMMddHHmmssSSS
# %unique -  provides a uniquified string
############################################################

log4j.appender.edpMain = com.oracle.endeca.pdi.logging.EdpODLFormatterAppender
log4j.appender.edpMain.ComponentId = DataProcessing
log4j.appender.edpMain.Path = /localdisk/Oracle/Middleware/1.2.0.31.801/logs/edp/edp_%timestamp_%unique.log
log4j.appender.edpMain.Format = ODL-Text
log4j.appender.edpMain.MaxSegmentSize = 100000000
log4j.appender.edpMain.MaxSize = 1000000000
log4j.appender.edpMain.Encoding = UTF-8

############################################################
# Formatter specific properties.
############################################################

log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern = [%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}] [DataProcessing] [%p] [] [%C] [tid:%t] [userID:${user.name}] %m%n

############################################################
# Facility specific properties.
############################################################

# These loggers from dependency libraries are explicitly set to different logging levels.
# They are known to be very noisy and obscure other log statements.
log4j.logger.org.eclipse.jetty = WARN
log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper = INFO
log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter = INFO
The file has the following properties:
Logging property Description
log4j.rootLogger The level of the root logger is defined as INFO and attaches the console and edpMain handlers to it.
log4j.appender.console Defines console as a Log4j ConsoleAppender.
log4j.appender.edpMain Defines edpMain as EdpODPFormatterAppender (a custom Log4j appender).
log4j.appender.edpMain.ComponentId Sets DataProcessing as the name of the component that generates the log messages.
log4j.appender.edpMain.Path Sets the path for the log files to the $BDD_HOME/logs/edp directory. Each log file is named:
edp_%timestamp_%unique.log
See the comments in the log file for the definitions of the %timestamp and %unique variables.
log4j.appender.edpMain.Format Sets ODL-Text as the formatted string as specified by the conversion pattern.
log4j.appender.edpMain.MaxSegmentSize Sets the maximum size (in bytes) of a log file. When the file reaches this size, a rollover file is created. The default is 100000000 (about 100 MB).
log4j.appender.edpMain.MaxSize Sets the maximum amount of disk space to be used by the main log file and the logging rollover files. The default is 1000000000 (about 1GB).
log4j.appender.edpMain.Encoding Sets character encoding for the log file. The default UTF-8 value prints out UTF-8 characters in the file.
log4j.appender.console.layout Sets the PatternLayout class for the console layout.
log4j.appender.console.layout.ConversionPattern Defines the log entry conversion pattern as:
  • %d is the date of the logging event, in the specified format.
  • %p outputs the priority of the logging event.
  • %c outputs the category of the logging event.
  • %L outputs the line number from where the logging request was issued.
  • %m outputs the application-supplied message associated with the logging event while %n is the platform-dependent line separator character.

For other conversion characters, see: https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html

log4j.logger.org.eclipse.jetty

log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper

log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter

Sets the default logging level for the Spark and Jetty loggers.

Logging levels

The logging level specifies the amount of information that is logged. The levels (in descending order) are:
  • SEVERE — Indicates a serious failure. In general, SEVERE messages describe events that are of considerable importance and which will prevent normal program execution.
  • WARNING — Indicates a potential problem. In general, WARNING messages describe events that will be of interest to end users or system managers, or which indicate potential problems.
  • INFO — A message level for informational messages. The INFO level should only be used for reasonably significant messages that will make sense to end users and system administrators.
  • CONFIG — A message level for static configuration messages. CONFIG messages are intended to provide a variety of static configuration information, and to assist in debugging problems that may be associated with particular configurations.
  • FINE — A message level providing tracing information. All options, FINE, FINER, and FINEST, are intended for relatively detailed tracing. Of these levels, FINE should be used for the lowest volume (and most important) tracing messages.
  • FINER — Indicates a fairly detailed tracing message.
  • FINEST — Indicates a highly detailed tracing message. FINEST should be used for the most voluminous detailed output.
  • ALL — Enables logging of all messages.

These levels allow you to monitor events of interest at the appropriate granularity without being overwhelmed by messages that are not relevant. When you are initially setting up your application in a development environment, you might want to use the FINEST level to get all messages, and change to a less verbose level in production.