Aha, so `auto-save-mode' says that auto-save should
apply to the current buffer. So that doesn't make sense
in my previous post, but the hook should still work, as
long as there are buffers "under the influence" all
round, which is likely.
But, using that to solve the problem of the OP, if the
message buffer could be associated with a file, and
then itself subjected to auto-save-mode, that would be
even better. Try:
(let ((buffer "*Messages*"))
(with-current-buffer buffer
(set-visited-file-name buffer t) ; no confirmation
(auto-save-mode) ))