2013-06-20 7 views
1

Учитывая объект:Получить «имя» для объекта, соответствующего пакету имя и имя объекта

package com.foo.bar 
object Sample { 
    val LOG = org.slf4j.LoggerFactory.getLogger(???) 
    .... 
} 

, что оператор/функция/все, что я вкладываю в getLogger заявление для того, чтобы получить «com.foo. bar.Sample "?

В принципе, это всего лишь вопрос стиля кода, на данный момент я сконфигурировал IntelliJ для генерации операторов LOG со строками, оцененных из шаблона типа "packagename.classname". Но может быть, есть лучший способ?

Спасибо.

+1

Вы должны попробовать scala logging, это просто, легко, и вам не нужно угадывать имена классов или использовать фабрики лесозаготовок: https://github.com/typesafehub/scalalogging – Noah

+0

Да, зачем вы хотите поставить класс имена в исходных файлах, когда они уже есть? DRY! –

ответ

1

В этом случае вы можете использовать getClass().getName().

+0

Это не работает, добавляет трейлинг $, а для вложенных объектов имя класса выглядит как opa.opa.a.papa.test $ test1 $ вместо opa.opa.a.papa.test.test1 – jdevelop

+1

Так почему бы вам не сделать разделите конец '$' и замените другой '' '' на '.'? –

+0

в этом случае лучше жить с моим нынешним подходом – jdevelop