Вы должны быть особенно осторожны с инициализацией нестатических регистраторов, как ваш фрагмент кода работает в Serializable
классах.
Во-первых, потому что Log
не сериализуем, поэтому любая попытка сериализации вашего класса также потерпит неудачу. Если вы объявите свой регистратор transient
, то, как это логично, ваше поле log
не будет инициализировано после десериализации, поэтому вы получите NPE
при попытке записать материал. Не очень хорошая ситуация.
Таким образом, чтобы подвести итог, вы можете иметь нестатические регистраторы, если хотите, но убедитесь, что они инициализированы, прежде чем использовать их. Но кроме этого, я бы не стал сильно беспокоиться о нестатических регистраторах, большинство реализаций журналирования всегда все равно будут возвращать один и тот же объект регистратора (log4j определенно это делает).