You can't rollback "part" of a transaction - it's all or nothing.
Even if you nest transactions, inner level COMMIT instructions are ignored, and inner level ROLLBACK will cause an error:
Nesting Transactions[
^]
To insert a log entry which won't be rolled back regardless of the transaction is possible (but nasty) - use xp_cmdshell and execute osql with an INSERT statement into your log. It'll work - because it's a separate session - but it'll be dog slow!