![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
ТарасАтавин |
|
||||||||||||||||||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 26.8.2013 Репутация: нет Всего: нет |
Есть переменная
-------------------- Не так всё плохо, как оно есть на самом деле. |
||||||||||||||||||||||||
|
|||||||||||||||||||||||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
файл лога открывают один раз на все время работы программы (есть конечно варианты, но тебя они только запутают). А ты зачем-то открываешь и закрываешь при каждой записи. Это лишняя нагрузка на систему.
|
|||
|
||||
ТарасАтавин |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 26.8.2013 Репутация: нет Всего: нет |
Это сообщение отредактировал(а) ТарасАтавин - 18.9.2013, 11:49 -------------------- Не так всё плохо, как оно есть на самом деле. |
|||
|
||||
SenkraD |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 3.2.2006 Где: Украина::Киев Репутация: 2 Всего: 23 |
ну можно сначала предложить плохое решении:
вариант получше: если вам нужен xml, то может логер нужно сделать на базе того tinyxml или чего-то такого? |
|||
|
||||
ТарасАтавин |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 26.8.2013 Репутация: нет Всего: нет |
Это сообщение отредактировал(а) ТарасАтавин - 18.9.2013, 13:41 -------------------- Не так всё плохо, как оно есть на самом деле. |
||||
|
|||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
ТарасАтавин, во-первых, если у тебя программа может повисать, то зачем ты выбрал формат xml для ведения лога? В твоем случае формат лога должен быть как можно примитивней.
во-вторых, есть такая волшебная штука - когда ты посылаешь в поток std::flush или std::endl, то содержимое потока принудительно сбрасывается на диск. Т.е. если ты виснешь после этого, то данные не потеряются.
Как вариант, в подобных случаях можно использовать внешнее логирование - через отдельный сервис, который только логированием и занимается, а связь с ним через именованный канал или сокет. Пример: syslog и система событий Windows. |
|||
|
||||
akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Ну, перейди на wfstream, вроде так по теории должен открываться файл для чтения-записи. И перейди в бинарный режим.
Найди место, с которого надо переписать, установи указатель чтения-записи (позицию), перепиши. Отсеки всё лишнее в хвосте файла, если вставка оказалась меньше по размеру заменяемого куска текста. Задача простецкая, вроде все редакторы писали. -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
disputant |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 28.11.2011 Репутация: нет Всего: 3 |
У человека и так лог наверчен незнамо зачем в xml, только ресурсы жрать... А библиотека при каждом открытии-закрытии будет поллностью парсить и полностью переписывать. По-моему, начинать надо с того, что лог вести в обычном, простейшем текстовом формате с соответствующими флажками - сброса кэша + расшаривания для просмотра в другой программе. |
|||
|
||||
Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
Может проще заюзать какой нить http://pugixml.org/documentation/
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |