Table logging is transactional, so it won't work as expected when a ROLLBACK is performed. IMO this is therefore not an option.
A non-transactional variation is possible though by using a proxy table mapped to an O/S file. This is non transactional, and you have the logged msgs directly in a file as well. There will likely be some performance overhead though so you'd need to check that for very intensive scenarios.
Another item missing from the list is using dbcc logprint or dbcc printolog (pints strings to the ASE errorlog, this can sometimes be useful).
As for syb_sendmsg, I think I recall there is little overhead as this is pretty lightweight (it's UDP , not TCP). But you need a listener on the other side, which has disadvantages,