Please use the Ftp.TransferProgressChanged event to log the number of transferred bytes and the time it took to transfer a file. See this sample code which demonstrates it:
Ftp ftp = new Ftp();
ftp.LogWriter = new FileLogWriter("log.txt", LogLevel.Info);
ftp.TransferProgressChanged += ftp_TransferProgressChanged;
ftp.Connect("test.rebex.net");
ftp.Login("demo", "password");
ftp.GetFile("/pub/test/test.zip", @"C:\temp\test.zip");
ftp.Disconnect();
void ftp_TransferProgressChanged(object sender, FtpTransferProgressChangedEventArgs e)
{
if (e.TransferState == TransferProgressState.FileTransferred)
{
Ftp ftp = (Ftp)sender;
if (ftp.LogWriter != null)
{
long seconds = 0;
if(e.BytesPerSecond > 0)
seconds = e.BytesTransferred / e.BytesPerSecond;
ftp.LogWriter.Write(LogLevel.Info, typeof(Ftp), 0, "Status", string.Format("File transfer succeeded. Transfered {0} bytes in {1} seconds.", e.BytesTransferred, seconds));
}
}
}