Rebex File Server
SFTP, SCP and SSH server library for .NET
Download 30-day free trial Buy from $349More .NET libraries
-
Rebex SFTP
.NET SFTP client
-
Rebex FTP
.NET FTP client
-
Rebex Total Pack
All Rebex 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 FileServer
object):
// start logging to a file server.LogWriter = new Rebex.FileLogWriter(@"C:\MyData\log.txt");
' start logging to a file server.LogWriter = New Rebex.FileLogWriter("C:\MyData\log.txt")
A sample log file:
2014-07-14 12:05:19.679 Opening log file.
2014-07-14 12:05:19.680 Using FileLogWriter version 2.0.0.0.
2014-07-14 12:05:19.700 INFO SftpServer(1)[32] SSH: Starting SSH server.
2014-07-14 12:05:19.701 INFO SftpServer(1)[32] SSH: Listening for connections at 0.0.0.0:2222.
2014-07-14 12:05:19.701 INFO SftpServer(1)[32] SSH: SSH server started.
2014-07-14 12:05:19.778 INFO SftpServer(1)[29] SSH: Session 1: Started on connection from 127.0.0.1:49591.
2014-07-14 12:05:20.114 INFO SftpServer(1)[32] SSH: Stopping SSH server.
2014-07-14 12:05:20.114 INFO Session(0)[29] SSH: Session 1: Connection close requested by the remote host.
2014-07-14 12:05:20.116 INFO SftpServer(1)[32] SSH: No longer listening for connections at 0.0.0.0:2222.
2014-07-14 12:05:20.116 INFO SftpServer(1)[32] SSH: SSH server stopped.
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 server.LogWriter = new Rebex.FileLogWriter( @"C:\MyData\log.txt", Rebex.LogLevel.Debug);
' start logging to a file at debug level server.LogWriter = New Rebex.FileLogWriter("C:\MyData\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 server.LogWriter = new Rebex.FileLogWriter( @"C:\MyData\log.txt", Rebex.LogLevel.Debug);
' start logging to a file at debug level server.LogWriter = New Rebex.FileLogWriter("C:\MyData\log.txt", Rebex.LogLevel.Debug)
.NET trace listener
To log to .NET Trace Listeners, use TraceLogWriter
:
// start logging to subscribed trace listeners server.LogWriter = new Rebex.TraceLogWriter(Rebex.LogLevel.Debug);
' start logging to subscribed trace listeners server.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 server.LogWriter = new Rebex.ConsoleLogWriter(Rebex.LogLevel.Debug);
' start logging to the standard output stream at debug level server.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 server.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 server.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...