diff --git a/LogAppenders.cs b/LogAppenders.cs
index d1dbe2a..5c1a61d 100644
--- a/LogAppenders.cs
+++ b/LogAppenders.cs
@@ -16,15 +16,12 @@ namespace winsw
public abstract class LogHandler
{
private EventLogger eventLogger;
- private string baseLogFileName;
-
- public LogHandler(string logDirectory, string baseName)
- {
- this.baseLogFileName = Path.Combine(logDirectory, baseName);
- }
public abstract void log(Stream outputStream, Stream errorStream);
+ ///
+ /// Error and information about logging should be reported here.
+ ///
public EventLogger EventLogger
{
set
@@ -37,14 +34,6 @@ namespace winsw
}
}
- public string BaseLogFileName
- {
- get
- {
- return this.baseLogFileName;
- }
- }
-
///
/// Convenience method to copy stuff from StreamReader to StreamWriter
///
@@ -79,7 +68,30 @@ namespace winsw
}
}
- public abstract class SimpleLogAppender : LogHandler
+ ///
+ /// Base class for file-based loggers
+ ///
+ public abstract class AbstractFileLogAppender : LogHandler
+ {
+ private string baseLogFileName;
+
+ public AbstractFileLogAppender(string logDirectory, string baseName)
+ {
+ this.baseLogFileName = Path.Combine(logDirectory, baseName);
+ }
+
+
+ protected string BaseLogFileName
+ {
+ get
+ {
+ return this.baseLogFileName;
+ }
+ }
+
+ }
+
+ public abstract class SimpleLogAppender : AbstractFileLogAppender
{
private FileMode fileMode;
@@ -131,10 +143,21 @@ namespace winsw
: base(logDirectory, baseName, FileMode.Create)
{
}
-
+ }
+
+ ///
+ /// LogHandler that throws away output
+ ///
+ public class IgnoreLogAppender : LogHandler
+ {
+ public override void log(Stream outputStream, Stream errorStream)
+ {
+ new Thread(delegate() { CopyStream(outputStream, Stream.Null); }).Start();
+ new Thread(delegate() { CopyStream(errorStream, Stream.Null); }).Start();
+ }
}
- public class TimeBasedRollingLogAppender : LogHandler
+ public class TimeBasedRollingLogAppender : AbstractFileLogAppender
{
private string pattern;
@@ -208,7 +231,7 @@ namespace winsw
}
- public class SizeBasedRollingLogAppender : LogHandler
+ public class SizeBasedRollingLogAppender : AbstractFileLogAppender
{
public static int BYTES_PER_KB = 1024;
public static int BYTES_PER_MB = 1024 * BYTES_PER_KB;
diff --git a/ServiceDescriptor.cs b/ServiceDescriptor.cs
index edee5a2..812a676 100755
--- a/ServiceDescriptor.cs
+++ b/ServiceDescriptor.cs
@@ -322,6 +322,9 @@ namespace winsw
case "rotate":
return new SizeBasedRollingLogAppender(LogDirectory, BaseName);
+ case "none":
+ return new IgnoreLogAppender();
+
case "reset":
return new ResetLogAppender(LogDirectory, BaseName);