process TEST = {
service = MessageLogger {
vstring destinations = { "detailedInfo.txt"
, "critical.txt"
, "jobdebug.txt"
, "anotherfile.txt"
, "cout"
, "cerr"
}
vstring categories = { "unimportant"
, "trkwarning"
, "serious_matter"
}
PSet critical.txt = { string threshold = "ERROR"
PSet default = { int32 limit = 10
int32 timespan = 180
}
PSet serious_matter = { int32 limit = 100000 }
}
PSet detailedInfo.txt = { string threshold = "INFO"
PSet default = { int32 limit = 10
int32 timespan = 60
}
PSet WARNING = { int32 limit = 100
int32 timespan = 60
}
PSet ERROR = { int32 limit = 100
int32 timespan = 60
}
PSet trkwarning = { int32 limit = 20
int32 timespan = 1200
}
PSet unimportant = { int32 limit = 5 }
PSet serious_matter = { int32 limit = 1000000 }
}
PSet cerr = { string threshold = "WARNING" }
PSet jobdebug.txt = { PSet default = { int32 limit = 1000000 }
}
PSet anotherfile.txt = { PSet serious_matter = { int32 limit = 1000 }
}
PSet default = { int32 limit = 10
int32 timespan = 60
}
}
untracked PSet maxEvents = {untracked int32 input = 10}
path p = { myAnalysisModule }
module myAnalysisModule = ModuleThatIssuesMessages { }
source = EmptySource { }
}
Each destination can (in addition to limits by message ID) be configured to
react to only some limited number of messages of a specified severity level.
For example, detailedInfo.txt would react to only the first 100 messages
issued via edm::LogWarning(...), and the first 100 issued via
edm::LogError(...), with exponential backoff thereafter. (Typically, one might
limit the number of INFO or WARNING messages and let all the ERROR messages
emerge.)
A message can be ignored because the limit for that severity is exceeded, or because the limit for that ID is exceeded.
Establishing limits by severity level is always optional.
