2017-02-22 25 views
0

У меня есть простое автономное приложение регистрации на основе кода C#, оно принимает параметры и добавляет их в файл журнала.C# Лучший способ избежать дублирования за каждый временной интервал в файле журнала

Некоторых события показали в журнале многократного времени (из-за повторные попытки)

Что будет лучшим способом «пропустить» лесозаготовительные повторяющиеся события для й периода времени?

(Поскольку приложение регистрации вызывается только тогда, когда событие произошло, я не могу держать эти данные в памяти)

Моя первая мысль есть, чтобы сохранить какой-то файл с хэшей событий (за исключением Отметка времени) и проверки это в списке, но мне было интересно, есть ли лучший способ сделать это, поскольку мы регистрируем довольно много данных, и я боюсь, что управление другим файлом, запуск хеш-функции и поиск моего, будет убийцей для функциональность.

+0

Функциональность, которую вы описываете, превышает простой механизм файла журнала. Вы должны попробовать 'SQLite' и вести журнал там. Двойной индекс столбца на '' log_message "," log_timestamp "' даст вам возможность запрашивать сообщения, которые начинаются с 'Whatever message message' за последние X минут, и если ничего не найдено,' INSERT ..... ' – Sharky

ответ

0

Регистратор действительно не должен редактировать то, что написано, поскольку он не знает (или, по крайней мере, не должен) знать о бизнес-логике - например, повторения попыток.

Если вы не хотите, чтобы каждый повторный сеанс регистрировался, переместите регистрацию уровня в коде, чтобы он регистрировался только после неудачных попыток.

Например, это звучит, как у вас есть что-то вроде этого (псевдо-код)

loop retries x number of times 
    try action 
    did action succeed? 
     yes: break out of loop 
     no : increment x 
      log failure 
end of retry loop 
... logic continues 

когда то, что вы на самом деле хотите,

set success flag to false 
loop retries x number of times 
    try action 
    did action succeed? 
     yes: set success flag to true 
      break out of loop 
     no : increment x 
end of while 
is success flag true 
    yes: continue 
    no : log failure 
... logic continues 

Разница только для перемещения протоколирование из цикл повтора.

+0

Я могу контролировать только код приложения регистрации, я не могу изменить код приложения, вызывающего регистратор – daveDDD

Смежные вопросы