Hi! I had some problems with trace. Sometimes trace to some functions (especially to those in implementation of SWANK itself) didn't appear on the screen.
Maybe I just didn't read manual carefully, but I solved my problem with this:
; catch initial value of *standard-output* - that is, output to original plain SBCL console. (defvar *initial-standard-output* *standard-output*)
; make sure that code is invoked every time we connect to SWANK.
(defun redirect-trace-output-to-inferior-lisp (c) (setf (slot-value c 'swank::trace-output) *initial-standard-output*))
(push 'redirect-trace-output-to-inferior-lisp swank::*new-connection-hook*)
somewhere in my initialization file. Now I'm sure all trace output is directed to plain SBCL console.
Maybe you could implement what you need in a way like this.
Disclaimer: my swank client is not EMACS. But AFAIR this worked in EMACS too.