Project

General

Profile

How to Track Down the Default Message Facility Configuration

Typically, an experiment will recommend lines in a fcl file to set up for logging messages; these lines will
rely on standardized fcl files that configure the message facility in ways decided on by the experiment's software experts.

A user may wish to know the message logging options being used, typically because it may be necessary to
customize the logging behavior. We will illustrate how to find out what the options are, and other key information.

This illustration is in the context of the mu2e Offline software, but the situation for other experiments should be very similar.

In the standard starting fcl file recommended by the experiment there will be a line bringing in the "standard" message configurations decided on by the experiment.

#include "minimalMessageService.fcl" 

(These experiment-provided fcl files will generally be kept in some visible area; in mu2e it is Offline/fcl.)
That file will usually pull in a file with a larger menu of potential configurations, and specify that one of these is the normal default:

#include "fcl/messageService.fcl" 
BEGIN_PROLOG
default_message : @local::mf_interactive
END_PROLOG

Here, the prolog section provides substitutions that can be used later in the fcl file; in this case, a definition of default_message that is found in messageService.fcl.

mf_interactive :
{
  destinations :
  {
    log:  @local::mf_coutInfo
  }
  statistics : @local::mf_coutInfoStats
}

For the purposes of knowing the name (and general nature) of the log file(s) this is as far as one needs to go. So for example, to suppress time stamps, all you need to know is that when your fcl file does

services : {
  message : @local::default_message
  # ...
}

the name of the destination created is log.

As long as we are looking a details, messageService.fcl gets the definition of mf_coutInfo by including standardMessageDestinations.fcl which contains

mf_coutInfo:
{ 
  type:      cout
  threshold: INFO
  categories:
  {
    ArtReport:
    { reportEvery : 50
      limit       : -1
    }
    default :
    {
      limit : 10
    }
  }
}

The fact that this is a cout destination set to a threshold of INFO should come as no surprise. An interested user might note that mu2e has chosen to set a limit of outputting 10 instances for each category of message, backing off exponentially after that.
And that the ArtReport message is printed out every 50 times, with no limit at all.