HighLogger
This is a simple heirarchical component-based logging system based on
Ruby's standard "Logger". Component-based means that you call the
logging function with a component such as a filename in addition to the
severity. This allows HighLogger to be configured from a file to
filter each component by severity. Thus, you could filter output from
one file to only errors and up, while another file that you just added
will log every message of every severity. This is useful for debugging
larger projects, and adding new components to projects of any size.
HighLogger is heirarchical because if a component has one or more
colons in the name, they are treated as separators. For instance, the
component name "Math:DiffEQ:Integrator:Cash-Karp" has four levels. If
a severity setting isn't given for the full name, each sub-name will
be checked in turn. For the above example, "Math:DiffEQ:Integrator"
would be checked next, then "Math:DiffEQ", then "Math". So if there
were no setting for the first three of those but "Math" was set to log
fatal errors only, then log messages directed to component
"Math:DiffEQ:Integrator:Cash-Karp" would be recorded only if fatal.
This is a simple heirarchical component-based logging system based on
Ruby's standard "Logger". Component-based means that you call the
logging function with a component such as a filename in addition to the
severity. This allows HighLogger to be configured from a file to
filter each component by severity. Thus, you could filter output from
one file to only errors and up, while another file that you just added
will log every message of every severity. This is useful for debugging
larger projects, and adding new components to projects of any size.
HighLogger is heirarchical because if a component has one or more
colons in the name, they are treated as separators. For instance, the
component name "Math:DiffEQ:Integrator:Cash-Karp" has four levels. If
a severity setting isn't given for the full name, each sub-name will
be checked in turn. For the above example, "Math:DiffEQ:Integrator"
would be checked next, then "Math:DiffEQ", then "Math". So if there
were no setting for the first three of those but "Math" was set to log
fatal errors only, then log messages directed to component
"Math:DiffEQ:Integrator:Cash-Karp" would be recorded only if fatal.