2013-12-19 26 views
1

Я хотел бы регистрировать сообщения только один раз во время работы программы или иметь возможность «разблокировать» «уникальное» сообщение, чтобы оно было снова занесено в журнал.Log4net: журнал уникальных сообщений

Конечно, это может быть сделано при отслеживании кода «уникального» сообщения и вызове метода журнала только один раз, но мне интересно, можно ли это сделать с помощью какой-то конфигурации.

В псевдокоде:

DO 
    i = i++ 
    log.info("this should be unique") 
    log.info("this can be repeated") 
LOOP WHILE i < 10 

unlock("this should be unique") 
log.info("this should be unique") 
log.info("this can be repeated") 

После этого я должен видеть «это должно быть уникальным» 2 раза в моем журнале.

ответ

1

Ваш other question заставил меня рассмотреть этот тоже. Должна быть возможность создать систему для регистрации любого сообщения только один раз (до сброса) с помощью любого буферизатора и пользовательского ITriggeringEventEvaluator.

Задайте размер буфера равным 0, а оценщик - обычным. В пользовательском Evaluator отслеживайте все сообщения, которые прошли через метод IsTriggeringEvent, и отфильтровывайте те, которые уже обработаны.

Можно настроить сообщения, которые будут отфильтрованы, однако вы хотите сделать это (файл конфигурации, БД и т. Д.), А также то, как они могут быть снова зарегистрированы (тайм-аут фильтрации, явный сброс и т. Д.) Через код оценщика.

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