Я сейчас создаю логгеры (с конфигурацией) так:
class MyClass {
private val log = Logger.get(classOf[MyClass])
}
Я бы хотел избежать повторения «MyClass», как в classOf[MyClass]
(например, я хочу быстро скопировать и вставить строку определения журнала, без интеллектуальной IDE, расширяющей шаблон именем класса), но я не хочу использовать динамический класс текущего объекта, например:
class MyClass {
private val log = Logger.get(this.getClass)
}
РЕДАКТИРОВАТЬ: потому что таким образом экземпляры подклассов будут иметь объект класса подкласса, передаваемый родительскому логгеру:
class MyClass {
private val log = Logger.get(this.getClass)
def doit = log.info("doing")
}
class SubClass extends MyClass {
}
new SubClass().doit
будет использовать регистратор, настроенный для подкласса, а не MyClass, как я хочу.
Есть ли способ иметь какое-то фиксированное выражение, которое каким-то образом дает класс, который определяется в этой точке?