Как отключить / установить уровень ведения журнала / настройки В приложении Mac OS X?

10326
mralexgray

Я нахожу, что журналы syslogd "Cosole" моего Mac становятся непригодными для использования, когда какое-то плохо написанное приложение ( в данном случае PathFinder.app ) непрерывно выливается в syslogd в течение всего дня ... Я где-то читал, что вы можете отключить ведение журнала PER приложением ..

  1. Создание псевдонима для исполняемого пакета внутри «пакета» приложения, а затем ТОЛЬКО запуск этого псевдонима из терминала. Процесс был ... Перейдите к /Applications/ObnoxiousLogger.app, щелкните правой кнопкой мыши, «Показать содержимое пакета», а затем перейдите к ...

    /Applications/ObnoxiousLogger.app/Contents/MacOS/ObnoxiousLogger

    Затем вы создаете псевдоним через графический интерфейс и не забываете всегда запускать приложение из этого псевдонима, снова ТОЛЬКО через терминал.

    Это раздражает, так как вы ДОЛЖНЫ создавать псевдоним через Finder (символическая ссылка не работает, и нет способа создать псевдоним через терминал ). И если он запускается ЛЮБЫМ другим способом, вы возвращаетесь к исходной точке, логорея . Этот метод ДЕЙСТВИТЕЛЬНО работал, но в течение очень короткого периода времени.

  2. Казалось бы, вы можете установить это с помощью команды launchctl или переменной plist, но это не приложение, которое запускает launchd, и документация launchd так повсеместно, но я думаю, что это возможно, я предположим.

  3. Я видел кое-что об отправке журнала в / dev / null, но не было ясно, был ли это какой-то канал syslogd, или команда, или параметр /etc/syslogd.conf, или что ...

Пожалуйста, дайте мне знать, если у вас есть верный способ выборочно молчание протоколирования каждого приложения, или даже лучше, увеличить или уменьшить протоколирование многословия, в процессе / команду, и т.д., в Mac OS X .

4
Подумайте о том, чтобы принять ответы на свои вопросы, если они решат проблему, щелкнув по флажку рядом с ними, или в качестве альтернативы измените свои вопросы или прокомментируйте ответы, почему они не работают для вас. Daniel Beck 13 лет назад 0

4 ответа на вопрос

5
Torsten Grust

Вы можете посмотреть, asl.conf(5)что позволяет игнорировать / обрабатывать сообщения журнала на достаточно детальном уровне.

Что-то вроде:

? [= Sender ObnoxiousLogger] ignore 

должен сделать свое дело. Если вы все еще хотите видеть более серьезные сообщения от отвратительного отправителя, что-то вроде:

? [= Sender ObnoxiousLogger] [> Level error] ignore 

может быть более подходящим.

Примечание : после редактирования /etc/asl.confне забудьте kill -HUPзайти в свой syslogd.

Спасибо за asl.conf. ObnoxiousLogger может иметь даже более серьезный эффект, чем «кража процессора»: предотвращение системного сна, так как частые записи на диск непрерывно сбрасывают таймер сна! Мой виновник - [Google Chrome] (http://www.google.at/chrome/), как на Mac, так и на Win. Я надеюсь, что это невинная ошибка. Но в это трудно поверить: 1) Постоянное присутствие пользователей в сети является бизнес-целью мэра, так как онлайн-время == время рекламы. Заманчиво добиться этого, управляя механизмом сна устройства… 2) A [ошибка Chrome сообщила 2012-07-28] (https://code.google.com/p/chromium/issues/detail?id=139480) до сих пор нет фиксированный. porg 10 лет назад 0
Мой system.log содержит нежелательные строки в этом формате: ` : ` поставляется в разных вариантах: `[какой-то шестнадцатеричный идентификатор] .com.google.Chrome [десятичный PID]` `Google Chrome [десятичный PID]` Q.1) Как мне сопоставить Google Chrome как отправителя в файле conf.asl? Используется `? [= Отправитель] игнорировать`. КакЯ пробовал: `Chrome, Google Chrome," Google Chrome ", com.google.Chrome, .com.google.Chrome` В.2) Какая правильная командная строка для уведомления syslogd? Используется `sudo kill -HUP pidOfMySylogd`. Каким должен быть код выхода? В моем случае это было ноль. porg 10 лет назад 0
3
Daniel Beck

Просто создайте Файл »Поиск в новой базе данных ..., поиск объекта содержит" console", а Отправитель не содержит" ObnoxiousLogger" и игнорирует поиск по умолчанию в базе данных Консольных сообщений ?

enter image description here


Вы можете использовать следующую команду для установки отдельных уровней фильтрации журналов для определенных процессов:

syslog -c processname -d 

Это установит уровень журнала текущих запущенных экземпляров processnameдля всех сообщений уровня отладки или выше . каждый из возможных уровней pacewnid: (Паника), Предупреждение, Критический, Ошибка, Предупреждение, Уведомление, Информация и Отладка .

Итак, чтобы включить регистрацию только предупреждающих сообщений и выше для Finder, используйте:

syslog -c Finder -w 

Вам нужно будет повторять это всякий раз, когда вы перезапускаете рассматриваемый процесс.

I have similar searches setup for just stuff I _want_ to see.. but is there any way to prevent "ObnoxiousLogger" from ever hitting the syslog facility, at all? My concern: all that chatter _must_ be robbing at least a few cpu cycles, no? mralexgray 13 лет назад 0
@mralexgray Добавил некоторые дополнительные исследования в мой ответ. К сожалению, в данный момент у меня нет неприятного процесса регистрации, поэтому я не могу выполнить ни одного надежного тестирования. Поэтому ответ в первую очередь основан на `man syslog`. Daniel Beck 13 лет назад 0
1
Haru

Предложенное Торстеном решение, похоже, не работает. Кажется, что добавление этих настроек в глобальный asl.confне даст ожидаемого эффекта при обработке правил.

Я обнаружил, что решение этой проблемы после того, как я чуть не пришел в бешенство с основным файлом asl.conf, заключается в использовании отдельных asl/*файлов конфигурации для каждого фильтра. Эти файлы должны храниться в/etc/asl/

Например, чтобы игнорировать «com.example.Sender» и отфильтровывать его спам в журнале от system.log, мы могли бы создать файл /etc/asl/com.example.Senderсо следующим содержимым:

? [= Sender com.example.Sender] claim only * ignore 

При claim onlyсовпадении (в данном примере это «Отправитель»), правила в мастере asl.confигнорируются, а это означает, что все не закончится system.log.

Не забудьте перезагрузить syslogd, конечно.

0
1.61803

Я выложил более подробный ответ на AskDifferent.

Вставьте /etc/asl.confправило, подобное следующему

? [= Sender foobar] [<= Level error] notify com.apple.foobar op key value op key value -----query 1----- -----query 2---- ---------action-------- 

Чтобы игнорировать сообщения в обоих system.log и в Console.app, вы должны добавить правила, чтобы игнорировать сообщения перед следующим комментарием в asl.conf.

# Flat file configurations formerly in syslog.conf

Пример с модификатором S, который игнорирует сообщения, соответствующие этой подстроке из SIMBL Agent.

? [= Sender SIMBL Agent] [S= Message warning: failed to get scripting definition from] ignore op -key-- ---value--- mod --key-- --------------------value----------------------- --------query 1------- -----------------------query 2------------------------------- action 

После добавления правила перезапустите демон с помощью sudo killall HUP syslogd .

Успешно протестировано в OS X 10.8.5.