Size: a a a

Rust — русскоговорящее сообществo

2020 December 09

в🧇

вафель 🧇 in Rust — русскоговорящее сообществo
Dollar Føølish
Можно ещё ворп посмотреть warp
warp сделан чуть ли не из сплошных антипаттернов и компилируется долго
источник

DF

Dollar Føølish in Rust — русскоговорящее сообществo
А какие там антипаттерны ?
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообществo
приватные трейты чтобы поводить по губам и заставить тебя макросами фигачит ьтам где можно было бы генерик написать? Ну всякое такое)
источник

DF

Dollar Føølish in Rust — русскоговорящее сообществo
А, тогда согласен
источник

DF

Dollar Føølish in Rust — русскоговорящее сообществo
Я прост не знал
источник

ΑZ

Αλεχ Zhukovsky in Rust — русскоговорящее сообществo
Dollar Føølish
Я прост не знал
ну вот буквально вчера было же: https://t.me/rustlang_ru/345012
источник

f

folex in Rust — русскоговорящее сообществo
А есть какой-нибудь способ подменить логгер для... куска программы?

У меня следующая ситуация. Я в тестах запускаю инстанс сервера несколько раз, чтобы их в кластер объединить. Логи превращаются в кашу, тк обычно каждый инстанс умамыспапой^W единственный, и stdout/err/etc безраздельно его. Хотелось бы как-то сделать а-ля

setLoggerPrefix! {
   prefix => "server-$id"
   run => (new Server()).start()
}


Догадываюсь, что прям так нельзя, но может кто-то решал подобную задачу, и как-то выкрутился?
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
А они логгируют через log?
источник

f

folex in Rust — русскоговорящее сообществo
Да. Чз env_logger + log
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Ну log  такое точно позволяет сделать, наверняка готовые библиотеки есть
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Особенно если тебе не жалко по потоку на каждый инстанс
источник

RP

Roman Proskuryakov in Rust — русскоговорящее сообществo
folex
А есть какой-нибудь способ подменить логгер для... куска программы?

У меня следующая ситуация. Я в тестах запускаю инстанс сервера несколько раз, чтобы их в кластер объединить. Логи превращаются в кашу, тк обычно каждый инстанс умамыспапой^W единственный, и stdout/err/etc безраздельно его. Хотелось бы как-то сделать а-ля

setLoggerPrefix! {
   prefix => "server-$id"
   run => (new Server()).start()
}


Догадываюсь, что прям так нельзя, но может кто-то решал подобную задачу, и как-то выкрутился?
у env_logger есть фильтрация через енв переменную, так что код менять не надо будет
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Mikail Bagishov
Особенно если тебе не жалко по потоку на каждый инстанс
В таком случае надо сделать имплементацию log::Log, которая будет конкретный инстанс логгера хранить в thread-local переменной
источник

f

folex in Rust — русскоговорящее сообществo
Mikail Bagishov
Особенно если тебе не жалко по потоку на каждый инстанс
Там инстансы внутри орудуют async_std, не уверен, что получится их разделить на тредпулы даже...
источник

f

folex in Rust — русскоговорящее сообществo
не то что на потоки
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Хм, ну если async_std то не знаю.
с Tokio так точно прокатило бы, можно на каждый тест запускать по рантайму и присвиаивать логгер через on_thread_start()
источник

f

folex in Rust — русскоговорящее сообществo
Да, было бы просто замечательно. Спасибо за идею, посмотрю, можно ли так в async-std
источник

K

Kitsu in Rust — русскоговорящее сообществo
folex
Там инстансы внутри орудуют async_std, не уверен, что получится их разделить на тредпулы даже...
источник

f

folex in Rust — русскоговорящее сообществo
🙏
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Но дочерние таски их не увидят
источник