2008-09-08 3 views
4

Я разрабатываю приложение, которое включает в себя необходимость регистрации всех входящих сообщений, которые я получаю от Telnet-соединения. Текст в значительной степени прост, хотя может включать теги ANSI, которые обеспечивают цвет текста и форматирование (16 цветов, полужирный, подчеркивание и т. Д.).Что такое хороший способ форматирования журналов?

Я хотел бы отформатировать мои журналы, чтобы сохранить текст с форматированием, датой/временем и потенциально другими метаданными позже. Мои первые мысли были всего XML, но это могло повлиять на мою способность быстро писать инструмент быстрого поиска. Моя текущая идея - дата/время + текст в одном файле с метаданными, хранящимися в другом файле XML, на который ссылается номер строки.

Это хорошее решение? Кроме того, где и как хранить команды форматирования? Исходные теги ANSI нарушат обычную, но наличие их в двух разных файлах может быть неудобным.

Дополнительно: Благодаря некоторым ответам до сих пор, хотя я должен упомянуть, что в большинстве случаев сообщения будут сообщениями от человека к человеку, а не системными сообщениями. Более примитивный IRC. Его до моего пользователя решить позже (добавив метаданные), какие сообщения были важны. Это является необработанным в журнале записи, из которого могут быть отфильтрованы или отредактированы журналы.

ответ

0

Если вы отправляете информацию о регистрации для будущих поисков и anaylsis, возможно, лучше всего будет база данных.

Что касается вашего решения. Плоские файлы не очень хорошо масштабируются там, где масштаб базы данных намного лучше. Я бы тоже не разбивал файлы, что просто связывает проблему масштабируемости. Если вам нужно использовать плоский файл, я бы, вероятно, попытался сохранить метаданные в csv (менее над головой) и данные в серии файлов, проиндексированных csv-файлом. Таким образом, все данные не влияют на ваш индексный файл. Просто мои мысли.

+0

Я добавлю автоматическое разбиение файлов на более поздний срок. База данных для этой ситуации немного тяжеловата, и я бы хотел, чтобы журналы могли быть в одиночестве. – Nidonocu 2008-09-08 21:45:02

1

G'day,

Определенно сделать регистрацию в плоский файл и добавить munge скрипты, чтобы превратить его в Xml позже.

Первое предложение состояло в том, чтобы убедиться, что все строки даты/времени в формате ISO 8601, а именно YYYY-MM-DD hh: mm: ss.

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

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

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

HTH.

веселит,

Роб

2

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

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

0

Я собираюсь «разделить ограждение» и скажу, что использую базу данных для всех записей журнала анализа/архивирования (например, ваших сообщений Telnet). Это предоставит вам преимущества полного поиска текста, столбцов и простых способов поиска данных.

Используйте плоский файл (или формат XML, так как файл не должен быть слишком большим) для любого из ваших журналов типа ошибок отладки/критической ошибки.

Если у вас сломанное соединение с базой данных или что-то пошло неловко с вашей структурой таблицы, вход в базу данных будет бессмысленным.

Подумайте об этом, если вы ищете немного более «легкое» решение, вы можете использовать SQLite для регистрации всего вашего трафика telnet, чтобы вы могли использовать преимущества структуры БД, но также иметь доступность файла.

С другим поклонением log4net вы можете легко выполнить это с помощью ADO-приложения, которое у них есть.

0

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

Я сделаю некоторые предположения. У вас есть пользователи, входящие в систему через telnet, и вы хотите захватить все, что они делают, когда они вошли в систему. Позже вы захотите связать материал, который они сделали с этим пользователем, и время и дату, когда они это сделали. Вам нужно будет найти позже, чтобы узнать, «кто сделал« rm * »как root?»

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

например. 2008_09_08_14_52_07_nidonocu

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

например.

ls 
cd www 
ls 
vi index.html 
/copyright 2007 
llllllllllllr8:wq 
exit 

Напишите 8-разрядные символы ANSI в файл. Вы должны иметь возможность использовать текстовый редактор и grep для выполнения основных аудитов и поиска. Вы можете использовать средство просмотра двоичных файлов или получить более сложную информацию, если вам нужно действительно прочитать 8-битные данные.

Резервные копии, архивирование, очистка и т. Д. Могут быть выполнены с использованием стандартных инструментов файловой системы и скриптов.

Приносим извинения, если мои предположения ошибочны.

-
Брюс

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