2010-04-11 6 views
2

Мы храним большую часть наших журналов в отдельной таблице базы данных. Мы создали собственные приложения для log4j и log4net, имеют фиксированную схему журналов с большим количеством удобных столбцов и вполне довольны этим.Где я должен хранить свои файлы журналов?

Это «лучшая практика» (для сайтов меньшего масштаба, чем Facebook, где простая таблица БД просто не будет масштабироваться)?

ответ

1

Предполагая, что вы используете веб-сервер на базе Linux, записывайте свои журналы в простой файл журнала и ежедневно выполняете задание cron bzip. Вы можете bzcat файл, чтобы получить его содержимое. Тот же cron-скрипт мог удалять файлы старше заданного порога, или вы могли удалять старые журналы вручную. Это довольно приемлемая схема, которую большинство демонов используют прямо или косвенно через syslog.

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

+0

Почему, на ваш взгляд, это предпочтительнее, чем баз данных? Это менее гибко. Вы когда-нибудь пробовали хранить их в БД или подобной БД системе? (см. мой комментарий к @shoosh) – ripper234

0

Журналы базы данных не сжимаются и не перемещаются в разные коробки. С другой стороны, поиск журналов в базе данных, вероятно, имеет преимущество.

Вы беспокоитесь о своем текущем решении? Если у вас нет проблем с этим, я бы не стал беспокоиться.

+0

Я не беспокоюсь - наше решение работает очень хорошо для нас. Я просто хотел узнать, что делают все остальные. – ripper234

0

Почему вы используете базу данных? Часто ли вы оказываете на него сложные запросы? Или можно использовать запросы, которые вы используете, для простого поиска grep?
Это основной вопрос, который вы должны задать себе при выборе между простым текстовым файлом журнала и таблицей DB.

+0

Да, мы находим их в базе данных бесценной. Мы можем сделать выбор в отношении диапазона дат, компонента, уровня журнала и т. Д. Я не вижу, как это сделать с помощью grep. Некоторые другие столбцы в нашей схеме - это PID/ThreadID (полезны для многопоточной отладки). У нас есть несколько других столбцов, которые я просто не могу вспомнить. – ripper234

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