You could just hook the AddMessage method:
Code:
hooksecurefunc(DEFAULT_CHAT_FRAME, "AddMessage", function(self, message, ...)
-- Do something with message
end)
Just remember if you want to output something to DEFAULT_CHAT_FRAME from within the hook you'll need to setup a flag to ignore that message or an endless loop will occur.