Start of ideas for you:
1. The getLogger(name) method is overloaded, and one of them has a param of a String, so you can name it anything you want, e.g. the transaction name. Difference is, obtain the logger at the start of the execution instead of at the class' instantiation (e.g. as an instance variable), and definitely not as a static logger. This has "logger name" as the transaction name.
2. Use MDC [0], [1] and add the transaction name as an MDC variable at the transaction start. This has "transaction name" as one of the data items in every log message. For example, all my web apps have an MDC for user name, so all user-related logging has the user name in it, enabling seeing single user's path through the system when troubleshooting.
Perhaps this is enough of an idea to get you going in a useful direction?