Monday 24 November 2014

A Fix for the Yosemite Console Log Problem

BitPerfect user Stefan Leckel has come up with a useful solution to the Yosemite Console Log problem.  In case you are unaware, under Yosemite, when you use BitPerfect, iTunes fills the Console Log with a stream of entries - several per second - which rapidly fills the Console Log to capacity.  At that point, the oldest messages are deleted.  In effect, this renders the Console Log pretty useless as a diagnostic tool.

Stefan's ingenious solution is a simple script file which, in effect, sets up the Console App so that it ignores these specific messages.  However, because the script works at the system level, using it requires a level of comfort with working on OS X using tools that are capable of wreaking havoc, although hopefully the instructions below are easy enough for most people to use with a degree of comfort.  As with anything that involves tinkering at the system level, YOU USE THIS TOOL ENTIRELY AT YOUR OWN RISK, AND WITH NO EXPRESS OR IMPLIED WARRANTY.  If in doubt, channel Nancy Reagan, and "Just Say No":)

First, you need to download a special script file which you can download by clicking here.  This will download a file called ConsoleFix.sh.  It doesn't matter where you place this file.  Your downloads folder would do fine.  If you are concerned about the authenticity of this file, or what it might be doing to your Mac, the contents are reproduced below for you to inspect and compare.

To use the script file, you need to first open a Terminal window.  Inside the terminal window type the following: "sudo bash " - don't type the quote marks, and be sure to leave a space after the bash - and DON'T press the ENTER key.  Next, drag and drop the ConsoleFix.sh file that you just downloaded into the Terminal window.  This action will complete the "sudo bash " line with the full path of the ConsoleFix.sh file.  Now you can press ENTER.  You will be prompted to enter your system password.  Enter it (nothing will show in the Terminal as you type), and hit ENTER.

That's it.  The Console Log should now work fine.  If you want to reset it back to how it was, just re-run the same sequence.  The same command is designed to toggle the modification on and off.

Thank you Stefan!

Below, for reference, I have reproduced the content of ConsoleFix.sh in full (lines shown in green are wrapped from the end of the previous line):

#!/bin/bash
#
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# use at your own risk, no warranty
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#
# checks if asl.conf is already modified
#
set -x
cat /etc/asl.conf|grep -F "? [= Facility com.apple.coreservices.appleevents] [=
Sender BitPerfect] [S= Message com.apple.root.default-qos.overcommit] ignore" > /dev/null

if [ $? -eq 0 ]
then
    echo "removing bitperfect modification from /etc/asl.conf file"
    cat /etc/asl.conf|grep -v -F "? [= Facility
com.apple.coreservices.appleevents] [= Sender BitPerfect] [S= Message com.apple.root.default-qos.overcommit] ignore" > /etc/asl.bitperfect
else
    echo "adding bitperfect modifications to /etc/asl.conf file"
    echo "? [= Facility com.apple.coreservices.appleevents] [= Sender BitPerfect]
[S= Message com.apple.root.default-qos.overcommit] ignore" > /etc/asl.bitperfect
    cat /etc/asl.conf >> /etc/asl.bitperfect
fi

echo "backup /etc/asl.conf to /etc/asl.conf.bitperfect"
cp /etc/asl.conf /etc/asl.conf.bitperfect

echo "activating new config"
mv /etc/asl.bitperfect /etc/asl.conf

echo "restarting syslogd daemon"
killall syslogd

echo "done."
exit