
Я разрабатываю приложение rails и scala, которое использует MySQL, Redis, MongoDB и memcached на OSX.
Довольно раздражает постоянно держать открытыми 6 терминалов и просматривать там логи, поэтому мне было интересно, есть ли инструмент, который позволяет мне запускать программы, а затем захватывать stdout / log в сокет (или в конец logfile, если это единственный вывод) и объединять его с префиксами для источника.
[MySQL - 00pid00] SELECT .......
[Rails Server - 11pid11] GET request to /foo
...
В идеале я также могу сортировать и фильтровать, напримерБензопила Apacheпозволяет использовать log4j и создавать собственные поля на основе регулярных выражений (т. е. при возникновении ошибки показывать мне поле, которое отображает только URL-адрес ошибки и HTTP-ответ/файл + строку, вызвавшую ошибку).
(Я знаю sed, awk, grep и т. д., но графический интерфейс гораздо проще в использовании и с ним гораздо быстрее начать работу)
решение1
Если вы можете настроить каждую из этих систем на ведение журнала в файлах, вы можете отслеживать эти журналы из Chainsaw и объединять записи журнала в одну таблицу. Вот как:
- Загрузите последнюю версию Chainsaw для разработчиков:http://people.apache.org/~sdeboy
- Выберите вкладку «Добро пожаловать», нажмите кнопку «Просмотреть пример конфигурации приемника» в верхней части вкладки и скопируйте конфигурацию. Создайте несколько записей VFSLogFilePatternReceiver, по одной для каждого файла журнала, который вы собираетесь отслеживать.
- Самый простой logFormat — MESSAGE — он поместит каждую строку журнала в поле MESSAGE в строку в Chainsaw.
- Вы можете заставить Chainsaw проанализировать строку журнала, используя поля, определенные в javadoc LogFilePatternReceiver:http://logging.apache.org/log4j/companions/receivers/apidocs/org/apache/log4j/varia/LogFilePatternReceiver.html
- Обратите внимание, что если ваш формат журнала охватывает несколько строк, вы можете использовать (LF) для обозначения перевода строки (еще не в этом JavaDoc)
- После того как все ваши файлы журналов будут отображаться в Chainsaw в виде отдельных вкладок, вы можете собрать все события со всех вкладок на новой вкладке, определив выражение, которое соответствует событиям, которые вы хотите видеть (см. раздел Справка/Учебник для получения документации по синтаксису выражений).
- Совет: очистите и приостановите вкладку журнала бензопилы (из меню «Текущая вкладка»), чтобы убедиться, что сообщения журнала бензопилы не смешиваются с вашими.
- Выберите «Просмотр, создание вкладки из выражения»
- Самое простое выражение, которое будет соответствовать всем записям во всех вкладках, — MSG EXISTS.
- будет создана новая вкладка с вашим выражением и заполнена всеми существующими событиями, соответствующими выражению
- по мере поступления новых событий, соответствующих выражению, они будут добавляться как на исходную вкладку, так и на вкладку выражения
решение2
Вы можете добавлять собственные файлы журналов к стандартным/Applications/Utilities/Console.app