From ff002e87110c2e1bf14eda3562d76aba636dc216 Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Mon, 31 Mar 2014 18:37:31 -0700 Subject: [PATCH] Added logger that throws away output --- LogAppenders.cs | 59 ++++++++++++++++++++++++++++++-------------- ServiceDescriptor.cs | 3 +++ 2 files changed, 44 insertions(+), 18 deletions(-) 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);