Yes that solution would be a good way to do it.
It's worth nothing however that, since you are connecting to several different servers, you have the opportunity to make significant speed improvements by parallelizing the FTP tasks. You can do this by launching each FTP operation on a separate thread. .NET provides several different ways of doing this including using a background-worker, your own explicitly created threads or launching them on the CLR's own threadpool.
If you were using edtFTPnet/Express or edtFTPnet/PRO you'd be able to simplify your code by using asynchronous methods, such as BeginUpload(). You'd still need to create a new connection for each server, but you wouldn't need to worry about dealing with the threads yourself.
With respect to logging, edtFTPnet does provide extremely extensive logging - probably the best in its class - but this is more aimed towards diagnostics. You're probably best off recording the reporting details you're after yourself. You could use the events (Connected, Uploaded, etc) to trigger the recording of those details.
- Hans (EnterpriseDT)