Здравствуйте, Marty, Вы писали:
KP>>Это соверщенно нормальный, типичный подход для мира за пределами C++.
M>Я в джаве покушал этого. Лучше бы их не было вовсе
А что именно тебе не понравилось? Как вы вообще использовали логи?
Здравствуйте, kaa.python, Вы писали:
KP>В новый проект нужно добавить логов. Желательно что бы логи были шустрые, но о микросекундах речи не идет. В теории я мог бы взять spdlog и радоваться жизни, но мне очень хочется получить структурные логи. KP>Какие есть опции, кроме как городить структурные логи самому, на что у меня просто нет времени?
Здравствуйте, Marty, Вы писали:
KP>>Это соверщенно нормальный, типичный подход для мира за пределами C++. M>Я в джаве покушал этого. Лучше бы их не было вовсе
Java можно ругать за разное, но таки именно она используется для очень крупных корпоративных систем, и их тяжко нажитый опыт стоит учитывать.
В логгерах для Go это сделали, в С++ — до сих пор курят непонятно что.
Здравствуйте, Cyberax, Вы писали:
KP>>>Это соверщенно нормальный, типичный подход для мира за пределами C++. M>>Я в джаве покушал этого. Лучше бы их не было вовсе C>Java можно ругать за разное, но таки именно она используется для очень крупных корпоративных систем, и их тяжко нажитый опыт стоит учитывать.
Ну, я конечно может и погорячился, и высказался излишне категорично, но мне эти логи а) мешают б) эти портянки часто нифига не помогают в) пока их настроишь — устаёшь приседать
А Java вообще гавно
Котлин на фоне джавы — ничего, но до плюсиков ему всё равно как пешком до Луны
Инфраструктура, конечно, впечатляет. Запилили бы managed С++ для JVM, как МС для шарпа, я бы первый перешел, бегом, роняя штаны.
Но вот структура проекта — это такое то ещё. "src/main/java|kotlin/com/mydomain/app"
Здравствуйте, Marty, Вы писали:
M>Ну, я конечно может и погорячился, и высказался излишне категорично, но мне эти логи а) мешают б) эти портянки часто нифига не помогают в) пока их настроишь — устаёшь приседать
Стоит понимать, что отладка и production — это разные вещи. JSON в отладке мне тоже не нравится. Потому у меня один и тот же лог на Go выглядит при отладка вот так:
Здравствуйте, Cyberax, Вы писали:
M>>Ну, я конечно может и погорячился, и высказался излишне категорично, но мне эти логи а) мешают б) эти портянки часто нифига не помогают в) пока их настроишь — устаёшь приседать C>Стоит понимать, что отладка и production — это разные вещи. JSON в отладке мне тоже не нравится. Потому у меня один и тот же лог на Go выглядит при отладка вот так:
Здравствуйте, _const_, Вы писали:
__>А обязательно прямо сразу в JSON писать? Плоская запись + filebeat + logstash не подойдет?
Здравствуйте, Nuzhny, Вы писали:
N>Не смотрел на binlog от Morgan-Stanley?
Как хорошо что решил полистать и нашел этот топик!
Сейчас почти такая же задача:
Есть бинарные логи в своём обычном виде написания.
Есть ELK + Graphana. logstah'a нет.
И есть желание записи в логах(может быть, какие-то) видеть в Графане.
Правильно понимаю, что нужно:
1) Переделывать записи в определенный json формат, который прописан у filebeat.
2) Делать txt формат из бинарного
Но вот как это делать?
Допустим, буду формировать записи в бинарном логе в json виде:
bin_log.log {
json...
json...
json...
}
Далее, сделаю питон скрипт, который будет периодически из бинарного делал текстовой:
bin_log.log -> text_log.txt
И класть в место, откуда читает filebeat.
Почему-то, мне не кажется это идеальным решением.
(каждые 100мб создается новый лог сейчас, делать логику по отслеживанию конца записи или нового файла лога, увеличение места из-за такого копирования при конвертации)
Подскажите, как упростить, облегчить?
А ТС, тебе же норм бинарный лог? У нас на проекте он для того, чтобы обеспечить:
1) Скорость записи
2) Сразу в память писать(mmap)
3) Экономия места
Чтобы в случае "бац!" ничего не пропало с HDD.
Правда, пока не смотрел, как он реализует многопоточность. Что каждый компонент, поток вызывает заветную LogInfo("%1%", "hello") и записи пишутся последовательно(как то с mmap связано).
Что по spdlog успел посмотреть, что данные складываются для отправки и если "бац!" то, вроде бы, отправленные в логгер записи не факт что будут сохранены на HDD.
На митапе С++ спрашивал про логгеры. Сказали, что в таком случае, можно с корки считать. Но я в этом не мастер. Кажется, что это не лучшее решение.
A>Есть ELK + Graphana. logstah'a нет. A>И есть желание записи в логах(может быть, какие-то) видеть в Графане.
Может тогда бери Grafana Loki? Loki и json хавает (правда с ограничениями), и алерты с метриками сразу в графану прилетают.
Здравствуйте, hi_octane, Вы писали:
A>>Есть ELK + Graphana. logstah'a нет. A>>И есть желание записи в логах(может быть, какие-то) видеть в Графане. _>Может тогда бери Grafana Loki? Loki и json хавает (правда с ограничениями), и алерты с метриками сразу в графану прилетают.
Здравствуйте, kaa.python, Вы писали:
KP>UPD. немного о том, что такое структурные логи, т.к. похоже что в мире C++ это нечто из ряда вот выходящее. Обычно это лог, где каждая строка лога — это полноценная JSON (может быть другой формат) запись, что крайне полезно при автоматизации.
К примеру, есть сервис, который прогоняет через себя сообщения.
Можно сделать json запись, в которой отобразить характеристики сообщения, откуда пришло, куда ушло, успешно ли.
Тогда лог будет из таких однотипных записей.
Но есть еще записи старта сервиса с диагностической информацией:
-Прочитал конфиг
-Приконектился к...
-Стартанул то-то
...
Еще в процессе могут быть ошибки отправки, и попытки рекконекта.