170 похожих чатов

Доброе утро. Можете посоветовать материал о том, как правильно реализовать

логирование работы программы? Чтобы любая ошибка на любой стадии работы сохранялась. В том числе краш программы

61 ответов

19 просмотров

Логгеров много. Найдите подходящий

Я не знаю правильно это или нет, но можно так: Создаем каталог logs, в него пишем файлики, в качестве название которых выступает системная дата+время.txt от момоента запуска программы.

serfcity -fsanitize=undefined,address
fopen ?

отличная идея. Самое то для логов. логи ведь лолжны сильно нагружать и тормозить программу. А ещё терять часть важных данных при случайных крэшах

Muesli- Автор вопроса
🐈
Тут вопрос не как и куда, а чем

Верно, вопрос был по поводу инструмента, его внедрения и использования. Спасибо за наводку, изучу готовые логгеры

serfcity -fsanitize=undefined,address
Ну а как еще?

Наверное логгеры делают просто так от нефиг делать. ведь есть же fopen? https://m.habr.com/ru/post/313686/

🐈
Наверное логгеры делают просто так от нефиг делать...

Ну или можно просто в stdout, а логированием пусть башня занимается...

Muesli
Верно, вопрос был по поводу инструмента, его внедр...

пытался использовать Baical(P7) но чёт не зашло. spdlog вроде норм

🐈
Нельзя

Почему же? stdout-то быстро робит.

serfcity -fsanitize=undefined,address
Почему же? stdout-то быстро робит.

Ну давай stdout на гуёвом приложении, которое вылетело с ошибкой

serfcity -fsanitize=undefined,address
Ну или можно просто в stdout, а логированием пусть...

Логи нужны не для "почитать сейчас". А для того чтобы потом посмотреть и понять что случилось и почему. И пользоваться твоей прогой будешь не ты, а "опытный пользователь Тётя Клава"

serfcity -fsanitize=undefined,address
$ a.out >> file.log.txt

у тебя же родители пользуются компом? Мама там, или бабушка? Главное чтобы они были с it не связаны. Вот давай ты на них поэксперементируешь с требованием запускать программу именно так в консоли а не кликом по иконке (можешь даже удалить ярлык ворда/экселя/1с/или чем они там пользуются). А потом расскажешь о том "в чем проблема-то?"

🐈
у тебя же родители пользуются компом? Мама там, ил...

ну писать файлики можно и без консоли

🐈
у тебя же родители пользуются компом? Мама там, ил...

Ну а что мешает создать run-programm.sh, в котором это и будет прописано.

serfcity -fsanitize=undefined,address
Ну а что мешает создать run-programm.sh, в котором...

Как минимум за логирование в stdout из нескольких потоков в продакте, у тебя извлекут руки из ненужного места и вставят в нужное

serfcity -fsanitize=undefined,address
Ну а что мешает создать run-programm.sh, в котором...

Любой адекватный заказчик, который хочет современное GUI-приложение, после требования запускать строго из терминала или через мутный .sh сразу поинтересуется, что за х... сотворили за его деньги

serfcity -fsanitize=undefined,address
При чём тут "нить"?

То есть вы советуете вместо написания многопоточных приложений, где каждыф поток занят своим делом, использовать std::printf? Прикольно. Поделитесь секретом, как?

serfcity -fsanitize=undefined,address
Используй не потоки, а std::printf() или std::puts...

@MasterZiv @anatolijs Тут какие-то интересные советы товарищь раздаёт.

🐈
То есть вы советуете вместо написания многопоточны...

Ну вместо потока std::cout использовать функцию вывода в терминал.

serfcity -fsanitize=undefined,address
Используй не потоки, а std::printf() или std::puts...

Многопоточные приложения это не про stream-ы а про thread-ы

Dmitriy [Отпуск]
Любой адекватный заказчик, который хочет современн...

Ну в UNIX это нормально. Например так делают почти все демоны такие как Apache2, Nigix, MySQL-server... Только этим занимается не bash-скрипт, а система инициализации: systemD, sysVInit, RC и т.д. ...

🐈
Они пишут в /var/log

Нет они пишут в stdout, а оттуда их перенаправляет система инициализации в /var/log

Dmitriy [Отпуск]
Любой адекватный заказчик, который хочет современн...

А как иначе если используется например LD_LIBRARY_PATH? Стим тот же примерно так и работает

Alexander N
А как иначе если используется например LD_LIBRARY_...

Тут надо было бы уточнить, говорим мы о логировании в GUI-приложениях в целом или UNIX only

serfcity -fsanitize=undefined,address
Про ОС ни слова.

Судя по вашим советам, опыта у вас пока мало. давайте вы не будете давать сомнительных советов, явно не сочитающихся с заданным вопросом?

🐈
Судя по вашим советам, опыта у вас пока мало. дава...

Ладно. Ну просто я думал, что так, как делает UNIX-системы наверное правильно. Не дураки ведь её писали?

serfcity -fsanitize=undefined,address
Ладно. Ну просто я думал, что так, как делает UNIX...

Так делают все приложения в unix или только демоны?

🐈
Так делают все приложения в unix или только демоны...

Не все, но многие. Например тот же GIMP: http://i115.fastpic.ru/big/2021/0719/30/47d186979265a32d080695b805e75b30.png

serfcity -fsanitize=undefined,address
Не все, но многие. Например тот же GIMP: http://i...

Ой https://gitlab.gnome.org/GNOME/gimp/-/blob/master/app/core/gimp-tags.c#L98 Ой https://people.gnome.org/~desrt/glib-docs/glib-Message-Logging.html тут тоже логгер Ой

serfcity -fsanitize=undefined,address
Не все, но многие. Например тот же GIMP: http://i...

https://github.com/GNOME/glib/blob/ff8b43a15498aeafe392acd97d1ff1107252227e/glib/gmessages.h#L320

serfcity -fsanitize=undefined,address
Не все, но многие. Например тот же GIMP: http://i...

https://github.com/GNOME/glib/blob/ff8b43a15498aeafe392acd97d1ff1107252227e/glib/gmessages.c#L1977

serfcity -fsanitize=undefined,address
Но пишет-то он в stdout.

Вам не кажется что там чуть сложнее чем простой вывод в stdout?

serfcity -fsanitize=undefined,address
Про ОС ни слова.

Если у тебя проблема именно с сохранением логов, то вопрос связан с системой. Например, в юниксе стандарт это syslog.

>

🐈
@MasterZiv @anatolijs Тут какие-то интересные со...

А что странного? и плохого ничего нет

Ilya Zviagin
А что странного? и плохого ничего нет

По-вашему совет использовать std::printf вместо std::thread - хороший? Окей, хорошо, раз вы так считаете, то пожалуй вынужден согласиться

Ilya Zviagin
Тоже ничего плохого.

Мешанина из логов - это хорошо и правильно?

🐈
Мешанина из логов - это хорошо и правильно?

не мешанина, а сортированное по времени))) Предложение то было такое

Kelbon
не мешанина, а сортированное по времени))) Предлож...

Если у тебя несколько потоков без каких-либо блокировок херачат в stdout то у тебя будут слова вперемешку а не сортировка по времени

🐈
Если у тебя несколько потоков без каких-либо блоки...

насколько я помню printf будет выводить сообщения полностью, там какая то синхронизация присутствует. Но вообще просто делаешь по файлику на поток.....

Kelbon
насколько я помню printf будет выводить сообщения ...

так только std::syncstream умеет, насколько я помню

🐈
Если у тебя несколько потоков без каких-либо блоки...

Ты думаешь, там внутри нет синхронизации ?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта