Lumberjack User Documentation

Lumberjack, named because it cuts down logs, is a C++ library that provides scalable logging while reducing the amount of messages written out the screen or file system.


Lumberjack was created to provide scalable logging with a simple programming model while allowing developers to customize its behavior. It is named Lumberjack because it cuts down logs. It uses MPI and a scalable binary tree reduction scheme to combine duplicate messages and limit output to only the root node.


  • MPI - MPI is fundamental to Lumberjack and without MPI, Lumberjack is not useful.
  • C++11 - Required for compiling Lumberjack

Code Guarding

You tell if Axom was built with Lumberjack enabled by using the following include and compiler define:

#include "axom/config.hpp"
    // Lumberjack code



  • Lumberjack - Performs all high level functionality for the Lumberjack library.
  • Message - Holds all information pertaining to a Message.


Handles all node-to-node Message passing.

  • Communicator - Abstract base class that all Communicators must inherit from.
  • BinaryTreeCommunicator - Main Communicator that is implemented with a scalable Binary Tree scheme
  • RootCommunicator - non-scalable communication scheme that all nodes connect to the root node. This is given for diagnostic purposes only.


Handles Message combination and tests whether Message classes should be combined.

  • Combiner - Abstract base class that all Combiners must inherit from.
  • TextEqualityCombiner - Combines Message classes that have equal Text member variables.