You'll need a API call on FTPClient/SSLFTPClient (and all classes that log)called, say,
public void setLogger(Logger log)
and we'll need to make the log variable in each class non-static.
You would construct the log object yourself and make it unique by appending your unique session id to the classname:
Logger mylog = Logger.getLogger("com.enterprisedt.net.ftp.ssl.SSLFTPClient_sessionid);
setLogger() would replace the current class logger with your own. Easy enough to do (but you'd need to do it for all classes that log - 3 or 4 of them). I don't think it will be possible at the moment to do this for the ssl logging - hopefully this will be sufficient for you.
Now, you need to be able to configure the Logger so that for a given FileAppender, log output only goes to the Logger you specify.
This will require another call:
Logger.addAppender(Logger log, Appender newAppender);
So now your log instance sends its output to only the Appender.
A clearLogger() would also be required to remove Loggers when no longer required, otherwise they will build up (in your case anyway).
I need to talk this one over - it has a yucky feel to it - so I'll have to get back to you. There may be a better approach I haven't thought of, and implications I haven't considered.
However I imagine it won't take long to get implemented once we make a decision, and we can make sure it is ready by mid June.
I already have the ability to configure different destinations for each instance, so I think this would probably work. I'm a bit hazy on why you mean by calling "Logger instance classname+uniqueid". Do you have a simple example?
Would 1.1.1 be available sometime by the mid to end of June?