Size: a a a

2018 April 28

RI

Ruslan Ibragimov in Kotlin Moscow
Maxim Zinchenko
кто сказал, что LoggerFactory.getLogger что-то создаёт?
Ну если не создает, то должен взять из какого-то кеша. И кеш должен быть thread safe, в горячем методе дергать getLogger я  бы не стал. поэтому как-то так использую:

class DataLoaderCommand {
   companion object {
       private val LOGGER = logger<DataLoaderCommand>()
   }
}
источник

RI

Ruslan Ibragimov in Kotlin Moscow
logger:

inline fun <reified T : Any> logger(): Logger = LoggerFactory.getLogger(T::class.java)
источник

PF

Pavel F in Kotlin Moscow
В догонку к своему - такого широкого екстеншен вала
источник

S

Sergey in Kotlin Moscow
по мне вообще любая экстеншен функция на Any это антипаттерн
источник

PF

Pavel F in Kotlin Moscow
Sergey
по мне вообще любая экстеншен функция на Any это антипаттерн
Лайк 😀
источник

MZ

Maxim Zinchenko in Kotlin Moscow
Sergey
я бы предпочел как-то адресно управлять тем, что добавляю к классу
extension не есть добавление
источник

S

Sergey in Kotlin Moscow
механику действия экстеншенов я понимаю
источник

S

Sergey in Kotlin Moscow
но «загаживать» общую область видимости всем - не правильно
источник

MZ

Maxim Zinchenko in Kotlin Moscow
Ruslan Ibragimov
Ну если не создает, то должен взять из какого-то кеша. И кеш должен быть thread safe, в горячем методе дергать getLogger я  бы не стал. поэтому как-то так использую:

class DataLoaderCommand {
   companion object {
       private val LOGGER = logger<DataLoaderCommand>()
   }
}
целый ворох предположений об устройстве LoggerFactory :)
и исходя из этих предположений вы предлагаете его использовать.
вы слышали о такой штуке как "дырявая абстракция"?
области отвественности...
как вам такая штука как изменение логгеров в рантайме?
источник

MZ

Maxim Zinchenko in Kotlin Moscow
Sergey
но «загаживать» общую область видимости всем - не правильно
откуда вы это берёте?
загаживание ровно такое, как если бы я в java сделал вот так
class LogUtils{
 public static getLogger(Object obj){}
}
собственно примерно такой код из этого extension и получится
источник

RI

Ruslan Ibragimov in Kotlin Moscow
Maxim Zinchenko
целый ворох предположений об устройстве LoggerFactory :)
и исходя из этих предположений вы предлагаете его использовать.
вы слышали о такой штуке как "дырявая абстракция"?
области отвественности...
как вам такая штука как изменение логгеров в рантайме?
Очень интересно, расскажите что не так с рекомендуемым методом из https://www.slf4j.org/manual.html#typical_usage
источник

S

Sergey in Kotlin Moscow
Maxim Zinchenko
откуда вы это берёте?
загаживание ровно такое, как если бы я в java сделал вот так
class LogUtils{
 public static getLogger(Object obj){}
}
собственно примерно такой код из этого extension и получится
Да, в java вы бы получили методе getLogger у класса утильного, а тут вы зааффектили все классы и автокомплит на них
источник

MZ

Maxim Zinchenko in Kotlin Moscow
Ruslan Ibragimov
Очень интересно, расскажите что не так с рекомендуемым методом из https://www.slf4j.org/manual.html#typical_usage
1. final Logger logger - не static
2. не поддерживает смену логгеров на лету, хотя LoggerFactory поддерживает
в целом годится, если Wombat коротко-живущий объект
источник

S

Sergey in Kotlin Moscow
не поддерживает смену логгеров на лету,  интересно как часто такое используют в проде
источник

RI

Ruslan Ibragimov in Kotlin Moscow
Всю жизнь годился для типичных сервисов со временем жизни = время жизни приложения, а тут перестал
источник

MZ

Maxim Zinchenko in Kotlin Moscow
Sergey
Да, в java вы бы получили методе getLogger у класса утильного, а тут вы зааффектили все классы и автокомплит на них
ровно та же фигня у extension val :) попробуйте :) никакой магии в kotlin нет - пока бы ЯВНО не заимпортите этот val никак вы его не увидете
источник

MZ

Maxim Zinchenko in Kotlin Moscow
Sergey
не поддерживает смену логгеров на лету,  интересно как часто такое используют в проде
веб морда wildfly это достаточный прод?
источник

MZ

Maxim Zinchenko in Kotlin Moscow
через неё можно менять логгеры налету в рантайме прода
источник

S

Sergey in Kotlin Moscow
я спорил с такой возможностью?
источник

MZ

Maxim Zinchenko in Kotlin Moscow
захотели что-то пологгировать в файлик - пологировали, а потом отрубили
источник