Как отключить / установить уровень ведения журнала / настройки В приложении Mac OS X?
Я нахожу, что журналы syslogd "Cosole" моего Mac становятся непригодными, когда какое-то плохо написанное приложение (в данном случае PathFinder.app) непрерывно выливается в syslogd в течение всего дня... Я где-то читал, что вы можете отключить ведение журнала PER приложением..
Создание псевдонима для исполняемого пакета внутри "пакета" приложения, а затем ТОЛЬКО запуск этого псевдонима из терминала. Процесс был... Перейдите в /Applications/ObnoxiousLogger.app, щелкните правой кнопкой мыши, "Показать содержимое пакета", а затем перейдите к...
/Applications/ObnoxiousLogger.app/Contents/MacOS/ObnoxiousLogger
Затем вы создаете псевдоним через графический интерфейс и не забываете всегда запускать приложение из этого псевдонима, снова ТОЛЬКО через терминал.
Это раздражает, так как вы ДОЛЖНЫ создавать псевдоним с помощью Finder (символическая ссылка не работает, и нет способа создать псевдоним через терминал). И если он запускается ЛЮБЫМ другим способом, вы возвращаетесь к исходной точке, логорея... Этот метод ДЕЙСТВИТЕЛЬНО работал, но в течение очень короткого периода времени.
Казалось бы, вы можете установить это с помощью команды launchctl или переменной plist, но это не приложение, которое запускает launchd, и документация launchd настолько повсеместна, но я думаю, что это возможно, я предположим.
Я видел кое-что об отправке журнала в /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.