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

Я нахожу, что журналы 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.

5 ответов

Решение

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

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

? [= Sender ObnoxiousLogger] ignore

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

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

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

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

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

введите описание здесь


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

syslog -c processname -d

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

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

syslog -c Finder -w

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

Я нахожусь на MacOS Mojave (10.14.3), и этот пост был полезен для меня, поэтому я хочу уточнить, что сработало для меня, поскольку я не видел все это вместе в одном месте. В моем случае я хотел отфильтровать сообщения Microsoft OneNote, которые постоянно рассылали спам моего файла system.log со скоростью 5 секунд. Пример сообщения:

Feb  3 22:52:49 MyMacMini-2 Microsoft OneNote[393]: [ACT]:[TASKSCHEDULER]:[Info]:opQueue=0x6000012d7760 after call to waitUntilAllOperationsAreFinished

Поэтому я отредактировал /etc/asl.conf со следующим правилом:

# Disable Microsoft OneNote logging as is filling up system.log!
? [= Sender Microsoft OneNote] ignore

Вы должны добавить это перед строкой, которая говорит:

# Rules for /var/log/system.log

Как иначе это не будет работать. Затем просто перезапустите syslogd с помощью этой команды, и сообщения должны быть удалены из system.log:

sudo killall -HUP syslogd

Предложенное решение Торстена, похоже, не работает. Кажется, добавив эти настройки в глобальный 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, конечно.

Более подробный ответ я разместил на 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.

Другие вопросы по тегам