In code …
It’s really easy to add logging to any application that uses our .net network library. Under the hood we are using NLog and it can be enabled as follows:
If you just want to log to a console window add this C# code snippet wherever you are also enabling the library:
LoggingConfiguration logConfig = new LoggingConfiguration();
ConsoleTarget consoleTarget = new ConsoleTarget();
consoleTarget.Layout = "${date:format=HH\\:mm\\:ss} [${threadid} - ${level}] - ${message}";
logConfig.AddTarget("console", consoleTarget);
logConfig.LoggingRules.Add(new LoggingRule("*", LogLevel.Debug, consoleTarget));
NetworkComms.EnableLogging(logConfig);
Note: These code snippets will require the following namespace references:
using NLog; using NLog.Config; using NLog.Targets;
If you also want to log to the console and a text file (log.txt) then use this C# code snippet instead:
LoggingConfiguration logConfig = new LoggingConfiguration();
FileTarget fileTarget = new FileTarget();
fileTarget.FileName = "${basedir}/log.txt";
fileTarget.Layout = "${date:format=HH\\:mm\\:ss} [${threadid} - ${level}] - ${message}";
ConsoleTarget consoleTarget = new ConsoleTarget();
consoleTarget.Layout = "${date:format=HH\\:mm\\:ss} [${threadid} - ${level}] - ${message}";
logConfig.AddTarget("file", fileTarget);
logConfig.AddTarget("console", consoleTarget);
logConfig.LoggingRules.Add(new LoggingRule("*", LogLevel.Trace, fileTarget));
logConfig.LoggingRules.Add(new LoggingRule("*", LogLevel.Debug, consoleTarget));
NetworkComms.EnableLogging(logConfig);
You can also add entries to the log from anywhere in your own code as follows:
//Add a Trace level log message
NetworkComms.Logger.Trace("my log message");
//Add a Debug level log message
NetworkComms.Logger.Debug("my log message");
//Add a Info level log message
NetworkComms.Logger.Info("my log message");
//Add a Warn level log message
NetworkComms.Logger.Warn("my log message");
//Add a Fatal level log message
NetworkComms.Logger.Fatal("my log message");If you want to disable logging at any point use:
NetworkComms.DisableLogging();
Using an external logging configuration …
It is also possible to specify the logging configuration in an external file. An external logging configuration file may look as follows, named nlog.config, for more information please see here:
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<targets>
<target name="logfile" xsi:type="File" fileName="file.txt" />
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="logfile" />
</rules>
</nlog>In your own code, should this file exist you can enable logging using it’s contents as follows:
string logFileName = "nlog.config";
if(System.IO.File.Exists(logFileName))
NetworkComms.EnableLogging(new NLog.Config.XmlLoggingConfiguration(logFileName));The advantage of this syntax is that you don’t need to rebuild your code should your logging requirements change.
