More .NET libraries
- 
                                
                                    
                                
                                Rebex FTP
                                .NET FTP client
 - 
                                
                                    
                                
                                Rebex SSH Shell
                                .NET SSH Shell
 - 
                                
                                    
                                
                                Rebex Total Pack
                                All Rebex .NET libraries together
 
Back to feature list...
Communication logging
On this page:
Logging communication using LogWriter
Communication logs are very useful when troubleshooting issues at the SFTP protocol or communication level. Whenever you run into a problem, a log makes it possible to see what is going on.
To start logging, just add the following line into your code (just after creating the Sftp object):
// create an SFTP object var sftp = new Rebex.Net.Sftp(); // start logging to a file sftp.LogWriter = new Rebex.FileLogWriter(@"C:\MyData\log.txt");
' create an SFTP object
Dim sftp As New Rebex.Net.Sftp()
' start logging to a file
sftp.LogWriter = New Rebex.FileLogWriter("C:\MyData\sftp.log.txt")
A sample log file:
2013-03-13 11:06:23.188 Opening log file.
2013-03-13 11:06:23.189 Using FileLogWriter version 2.0.2700.0.
2013-03-13 11:06:23.193 INFO Sftp(4)[34] Info: Connecting to testserver.local:22 using Sftp 3.0.2700.0.
2013-03-13 11:06:23.203 INFO Sftp(4)[34] SSH: Negotiation started.
2013-03-13 11:06:23.243 INFO Sftp(4)[34] SSH: Negotiation finished.
2013-03-13 11:06:23.243 INFO Sftp(4)[34] Info: Server: SSH-2.0-OpenSSH_6.0p1 Debian-3
2013-03-13 11:06:23.243 INFO Sftp(4)[34] Info: Fingerprint: e2:29:05:cd:7a:59:ee:03:fa:03:f5:72:61:77:e3:1c
2013-03-13 11:06:23.244 INFO Sftp(4)[34] Info: Cipher info: SSH 2.0, DiffieHellmanGroupExchangeSHA256, DSS, aes256-ctr/aes256-ctr
    Log verbosity levels
There are several levels of log verbosity:
- Error - logs error messages only
 - Info - default level; logs important informative messages as well
 - Debug - logs all messages useful for debugging purposes
 - Verbose - very detailed log for advanced analysis; logs content of communication packets
Warning: At the Verbose level, user credentials are written to the log as well. 
To specify a log level, just pass an argument to FileLogWriter's constructor:
// start logging to a file at debug level
sftp.LogWriter = new Rebex.FileLogWriter(
    @"C:\MyData\log.txt", Rebex.LogLevel.Debug);
' start logging to a file at debug level
sftp.LogWriter = New Rebex.FileLogWriter(
    "C:\MyData\sftp.log.txt", Rebex.LogLevel.Debug)
Built-in log writers
Text file
To log into a text file, use FileLogWriter:
// start logging to a file at debug level
sftp.LogWriter = new Rebex.FileLogWriter(
    @"C:\MyData\log.txt", Rebex.LogLevel.Debug);
' start logging to a file at debug level
sftp.LogWriter = New Rebex.FileLogWriter(
    "C:\MyData\sftp.log.txt", Rebex.LogLevel.Debug)
.NET trace listener
To log to .NET Trace Listeners, use TraceLogWriter:
// start logging to subscribed trace listeners sftp.LogWriter = new Rebex.TraceLogWriter(Rebex.LogLevel.Debug);
' start logging to subscribed trace listeners sftp.LogWriter = New Rebex.TraceLogWriter(Rebex.LogLevel.Debug)
Standard output stream
To log to the standard output stream, use ConsoleLogWriter:
// start logging to the standard output stream at debug level sftp.LogWriter = new Rebex.ConsoleLogWriter(Rebex.LogLevel.Debug);
' start logging to the standard output stream at debug level sftp.LogWriter = New Rebex.ConsoleLogWriter(Rebex.LogLevel.Debug)
Logging to multiple log writers
To log to more log writers at the same time, use TeeLogWriter:
var consoleLogWriter = new Rebex.ConsoleLogWriter(Rebex.LogLevel.Debug); var fileLogWriter = new Rebex.FileLogWriter(@"C:\MyData\log.txt", Rebex.LogLevel.Info); // start logging to both console and file log writers sftp.LogWriter = new Rebex.TeeLogWriter(consoleLogWriter, fileLogWriter);
Dim consoleLogWriter = New Rebex.ConsoleLogWriter(Rebex.LogLevel.Debug)
Dim fileLogWriter = New Rebex.FileLogWriter("C:\MyData\log.txt", Rebex.LogLevel.Debug)
' start logging to both console and file log writers
sftp.LogWriter = New Rebex.TeeLogWriter(consoleLogWriter, fileLogWriter)
Writing custom log writers
To implement your own LogWriter, either implementRebex.ILogWriter interface or simply derive a class from Rebex.LogWriterBase:
// Sample log writer that logs to the standard error output stream
public class MyLogWriter : LogWriterBase
{
    protected override void WriteMessage(string message)
    {
        Console.Error.WriteLine("Rebex: {0}", message);
    }
}
' Sample log writer that logs to the standard error output stream
Public Class MyLogWriter
    Inherits LogWriterBase
    Protected Overrides Sub WriteMessage(message As String)
        Console.Error.WriteLine("Rebex: {0}", message)
    End Sub
End Class
Back to feature list...