Log4J и другие каркасы журналов предоставляют концепцию уровней журналов, где вы указываете приоритет с каждым оператором журнала. Затем во время выполнения вы устанавливаете уровень самого файла журнала - будут проходить только операторы журнала с таким приоритетом или выше. Так, например, вы можете настроить свою производственную систему так, чтобы она регистрировала сообщения только на уровнях WARN или ERROR, тогда как ваша среда разработки может быть настроена на запись чего-либо с DEBUG или выше.
Это хорошее решение, поскольку оно не требует каких-либо изменений в коде (например, добавление / удаление операторов журнала для каждой новой сборки) и может быть легко перенастроено (временно), когда вам нужно выполнить что-то вроде отладки определенного проблема.
Если ваша система использует архитектуру .NET, есть порт log4j, называемый log4net, который вы можете использовать (хотя очевидно, что замена существующей системы потребует изменения кода). Однако этот вопрос задавался об общих принципах проектирования, а не о том, что делать с существующей кодовой базой, поэтому я думаю, что этого ответа достаточно.
Редактировать: поскольку у вас есть возможность использовать совершенно новый фреймворк, на этой странице есть список альтернатив, хотя я неравнодушен к log4j из-за моего собственного использования в приложениях Java.