Yeah, you want to run a dedicated thread. This might help:
Technically, yes. But you can get away with it. The down side is it is prone to disappear into the bitbucket on the floor when used in the background. You should use system.util.getLogger() in the background, and everywhere in a gateway scope.