Ведение журнала и фильтрация с использованием log4cxx - PullRequest
4 голосов
/ 13 мая 2011

Я работаю над приложением, в котором мне нужна функция регистрации и фильтрации. Я использую с ++. Я узнал о ведении журнала поддержки log4cxx.

У меня трудности с фильтрацией.

У меня есть пять полей

  1. MACID
  2. Дата и время
  3. Тип команды
  4. Статус
  5. Текст сообщения

Мне нужно сохранить эти 5 полей в файле журнала и отфильтровать их, используя опцию фильтрации ниже. Регистрация и фильтрация будут выполняться во время выполнения. Как только размер файла достигнет 10 МБ, он начнет переписывать файл с самого начала.

Параметры фильтрации
1. MACID
2. дата и время

Фильтрация может выполняться путем фильтрации одного или обоих. Результат должен вернуть все поля в файле журнала.

  1. Можно ли сохранить более одного поля в файле журнала с помощью log4CXX?
  2. Как отфильтровать информацию по вышеупомянутым критериям?
  3. Нужно ли мне писать свой собственный класс фильтра, наследующий от существующих классов фильтра?
  4. Нужно ли писать настраиваемый класс логгера для хранения 5 полей в файле журнала?

Ответы [ 2 ]

2 голосов
/ 25 мая 2011

Однажды я столкнулся с подобной проблемой, чем пункты 1 и 4. Я прочитал код log4cxx и нашел возможное решение. Помощник по работе протестировал решение и развил его. Его выводы можно найти здесь .

Мы спросили в списке рассылки log4cxx, было ли это правильным решением, и этот ответ мы получили . Надеюсь, это поможет.

0 голосов
/ 23 мая 2011

Я не думаю, что log4cxx - это правильный инструмент для вашей задачи, и я не совсем уверен, можно ли это вообще сделать с помощью log4cxx.

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

...