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

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

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

61 ответов

17 просмотров

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

Я не знаю правильно это или нет, но можно так: Создаем каталог 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 умеет, насколько я помню

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

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

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

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

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
10
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Здравствуйте, хочу сделать HelloWorld в консоли Дельфи, но функция API ничего не выводит, что я делаю не так? program Hello; {$APPTYPE CONSOLE} uses System.SysUtils, WinAPI.Wi...
Sergey Vinogradov
20
Карта сайта