Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • turn on/off this tracing, without having to restart, and similarly control the verbosity of detail in the traces/log, and control any selectivity features of the tracing.
  • supply the streams to which the trace/logs are written. These may or may not be streams leading to a file system.
  • avoid full-disk situations by being notified about the volume of data written to the streams and being able to change the streams without loss of any traces/log records.
  • run forever with tracing/logging turned on, albeit with some performance degradation proportional to the amount of trace/log information being generated.

Coding Style Requirements

In order to encourage testing for error situations, good diagnostics, clear code with good "algorithmic density" (by this I mean the code is not so spread out you can't follow what's going on in a screenful) it is important that issuing a diagnostic/error message take exactly 1 line of code 80% of the time, and not more than a couple of lines the rest of the time. Complex decision making about how the error message should best be phrased should be deferrable. Navigating to other files to create message identifiers should be deferrable, or optional.