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.

Introduction

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.

Requirements

  • 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"
#ifdef AXOM_USE_LUMBERJACK
    // Lumberjack code
#endif

Classes

Basic

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

Communicators

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.

Combiners

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.

Contents: