Что такое subid), то есть переопределяемая внешняя структура, я бы такую сделал.
С другой стороны, я считаю, что мои предположения о том, что логгирование и его подсистем как-то влияет на эффективность работы подсистемы (а я бы так и сделал), но именно в силу того, что сложно так вот сходу сообразить как по-умному это сделать, переопределенная структура была бы тут как нельзя кстати.
И она бы меня вполне устроила.
Видите ли, мне бы не хотелось видеть весь код только лишь в виде целого числа, подобно тому, как я привык видеть это количество в MVC (например, facebook вообще меня этим очень озадачивает), а хотелось бы иметь некий вид дерева, похожего на дерево-метрику.
Чтобы было понятно, что если я просто хочу использовать некий код (например facebook как метрику), то я должен описать в виде переменной его часть, и дальше можно без каких-либо ограничений использовать её для данной задачи.
При этом для того, чтобы создать такую переменную, я должен знать как, например, устроен мой класс, у которого эта переменная будет храниться.
Такие вещи я обычно считаю неудобными.
А если уж использую вместо переменной функцию, то я с ней должен работать, а не просто выкидывать её в empty, как я делаю во многом при работе с логическими ссылками.
Вот такой у меня подход.