We keep a reference to each logger in a hash-table for convenient lookup
purposes, plus keep each logger linked to the others in an ordered group.
Ordering places shortest names at the head and longest ones at the tail,
making the job of identifying ancestors easier in an orderly fashion.
For example, when propagating levels across descendants it would be
a mistake to propagate to a child before all of its ancestors were
taken care of.
The Logger hierarchy implementation.
We keep a reference to each logger in a hash-table for convenient lookup purposes, plus keep each logger linked to the others in an ordered group. Ordering places shortest names at the head and longest ones at the tail, making the job of identifying ancestors easier in an orderly fashion. For example, when propagating levels across descendants it would be a mistake to propagate to a child before all of its ancestors were taken care of.