SMDR Tariff - “Файл лога не обновлялся”


Я уже писал заметку об использовании SMDR Tarrif в качестве программы для записи журналов звонков мини-АТС. Пару недель назад столкнулся с небольшой проблемой. Logger выдал следующее сообщение: “Размер лог-файла превысил 20000 строк. Рекомендуется очистить лог-файл!“. Размер файла для логов составлял на тот момент чуть более 5 мегабайт.Сделал следующее. Заархивировал лог-файл в который пишет Logger, а затем удалили его содержимое. Запустил Logger информация начала снова записываться в лог-файл. Как бы порядок. Через пару дней решил загрузить информацию в SMDR Tariff, но получил в ответ сообщение, что “Файл лога не обновлялся!“. Решил, попробовать вместо пункта меню Обновить… использовать пункт меню Обновить из… , чтобы явно указать откуда обновляться. Указал лог-файл и информация загрузилась. Проверил, что загрузка прошла корректно и успокоился. На всякий случай глянул, кто, что пишет в Интернете по этому вопросу, но информации полезной не нашел.

В общем так я еще несколько раз выгружал данные, а вот сегодня наконец заметил, что данные каждый раз загружались повторно, а не так как раньше. То есть программа не отслеживала когда я делал последнюю выгрузку и загружала данные не от момента последней выгрузки, а с самого начала лог-файла. Так получалось дублирование информации… Начал еще раз искать информацию по этому вопросу в Интернете, но ничего не нашел :( . Пришлось искать самому. Нашел :) Все оказалось очень просто. Рассказываю.

В папке программы SMDR Tariff где лежит база (у меня это подкаталог Bases) есть три файла с именем базы: *.dbf, *.mdx, *.prm. Последний файл меня и заинтересовал. Его содержимое примерно вот такое:

276 0
8
1
1
/DD/MM/YY
8
1
0
1
9
7
2
1
:HH:NNam/pm
16
1
0
1
17
5
4
0
22
1
0
0
23
2
5
0
25
1
0
0
26
24
6
1
5
2
5
0

P p F f * # . X
0
7
0
<I>
Входящий
0
7
0
EXT
Внутренний
1
5
0
<I>
21
1
5
0
EXT
5
50
1
0
1
51
5
11
0
56
1
0
0
57
8
3
0
:HH:NN:SS
65
1
0
0
66
10
7
0
76
1
0
0
77
3
12
0
F:\ATS Logger\ats
-1508111800
29994524
1278231

Создавая новые базы, выгружая в них информацию и сравнивая содержимое *.prm - файлов, я увидел, что меняется у него только последнее число. И число это оказалось равным размеру лог-файла в байтах во время последней загрузки информации. То есть все гениально и просто! :) SMDR Tariff использует его как проверку, что лог-файл обновился (стал больше по размеру), а затем использует как смещение при загрузке информации. Если это число меньше или равно размеру лог-файла, то загрузка не выполняется. Когда я создал новый лог файл его размер начал увеличиваться с нуля. А число которое было в файле *.prm было равно размеру предыдущего лог-файла, то есть  5261793. И поэтому я получал сообщение “Файл лога не обновлялся!“, так как текущий размер файла был меньше чем записанный в файле *.prm .

После этого привести базу в порядок не составило труда. Закрываем Logger, чтобы получить доступ к лог-файлу, который временно переименовываем. Восстанавливаем из архива старый лог файл рядом с новым. Запускаем SMDR Tariff создаем новую базу и загружаем (нажимаем Обновить…) в нее данные из старого лог-файла. Затем старый лог файл удаляем и переименовываем обратно текущий лог-файл. Далее открываем *.prm файл новой базы и вместо последнего числа (у меня это 5261793) пишем 0. Нажимаем Обновить… и обновление проходит как обычно. Сообщение “Файл лога не обновлялся!” больше не появляется. Старую базу можна удалить.

Статьи и новости схожей тематики:

Оставьте свой отзыв