Fix stdout/stderr redirection when log disabled

pull/391/head
NextTurn 2020-01-31 00:00:00 +08:00
parent e06ae851f4
commit fce9a79d66
No known key found for this signature in database
GPG Key ID: 17A0D50ADDE1A0C4
1 changed files with 51 additions and 22 deletions

View File

@ -86,7 +86,32 @@ namespace winsw
ErrFilePattern = errFilePattern; ErrFilePattern = errFilePattern;
} }
public override void log(StreamReader outputReader, StreamReader errorReader)
{
if (this.OutFileDisabled)
{
outputReader.Dispose();
}
else
{
this.LogOutput(outputReader);
}
if (this.ErrFileDisabled)
{
errorReader.Dispose();
}
else
{
this.LogError(errorReader);
}
}
protected StreamWriter CreateWriter(FileStream stream) => new StreamWriter(stream) { AutoFlush = true }; protected StreamWriter CreateWriter(FileStream stream) => new StreamWriter(stream) { AutoFlush = true };
protected abstract void LogOutput(StreamReader outputReader);
protected abstract void LogError(StreamReader errorReader);
} }
public abstract class SimpleLogAppender : AbstractFileLogAppender public abstract class SimpleLogAppender : AbstractFileLogAppender
@ -103,12 +128,13 @@ namespace winsw
ErrorLogFileName = BaseLogFileName + ".err.log"; ErrorLogFileName = BaseLogFileName + ".err.log";
} }
public override void log(StreamReader outputReader, StreamReader errorReader) protected override void LogOutput(StreamReader outputReader)
{ {
if (!OutFileDisabled)
new Thread(() => CopyStream(outputReader, CreateWriter(new FileStream(OutputLogFileName, FileMode)))).Start(); new Thread(() => CopyStream(outputReader, CreateWriter(new FileStream(OutputLogFileName, FileMode)))).Start();
}
if (!ErrFileDisabled) protected override void LogError(StreamReader errorReader)
{
new Thread(() => CopyStream(errorReader, CreateWriter(new FileStream(ErrorLogFileName, FileMode)))).Start(); new Thread(() => CopyStream(errorReader, CreateWriter(new FileStream(ErrorLogFileName, FileMode)))).Start();
} }
} }
@ -136,8 +162,8 @@ namespace winsw
{ {
public override void log(StreamReader outputReader, StreamReader errorReader) public override void log(StreamReader outputReader, StreamReader errorReader)
{ {
new Thread(() => CopyStream(outputReader, StreamWriter.Null)).Start(); outputReader.Dispose();
new Thread(() => CopyStream(errorReader, StreamWriter.Null)).Start(); errorReader.Dispose();
} }
} }
@ -153,12 +179,13 @@ namespace winsw
Period = period; Period = period;
} }
public override void log(StreamReader outputReader, StreamReader errorReader) protected override void LogOutput(StreamReader outputReader)
{ {
if (!OutFileDisabled)
new Thread(() => CopyStreamWithDateRotation(outputReader, OutFilePattern)).Start(); new Thread(() => CopyStreamWithDateRotation(outputReader, OutFilePattern)).Start();
}
if (!ErrFileDisabled) protected override void LogError(StreamReader errorReader)
{
new Thread(() => CopyStreamWithDateRotation(errorReader, ErrFilePattern)).Start(); new Thread(() => CopyStreamWithDateRotation(errorReader, ErrFilePattern)).Start();
} }
@ -213,12 +240,13 @@ namespace winsw
public SizeBasedRollingLogAppender(string logDirectory, string baseName, bool outFileDisabled, bool errFileDisabled, string outFilePattern, string errFilePattern) public SizeBasedRollingLogAppender(string logDirectory, string baseName, bool outFileDisabled, bool errFileDisabled, string outFilePattern, string errFilePattern)
: this(logDirectory, baseName, outFileDisabled, errFileDisabled, outFilePattern, errFilePattern, DEFAULT_SIZE_THRESHOLD, DEFAULT_FILES_TO_KEEP) { } : this(logDirectory, baseName, outFileDisabled, errFileDisabled, outFilePattern, errFilePattern, DEFAULT_SIZE_THRESHOLD, DEFAULT_FILES_TO_KEEP) { }
public override void log(StreamReader outputReader, StreamReader errorReader) protected override void LogOutput(StreamReader outputReader)
{ {
if (!OutFileDisabled)
new Thread(() => CopyStreamWithRotation(outputReader, OutFilePattern)).Start(); new Thread(() => CopyStreamWithRotation(outputReader, OutFilePattern)).Start();
}
if (!ErrFileDisabled) protected override void LogError(StreamReader errorReader)
{
new Thread(() => CopyStreamWithRotation(errorReader, ErrFilePattern)).Start(); new Thread(() => CopyStreamWithRotation(errorReader, ErrFilePattern)).Start();
} }
@ -325,12 +353,13 @@ namespace winsw
ZipDateFormat = zipdateformat; ZipDateFormat = zipdateformat;
} }
public override void log(StreamReader outputReader, StreamReader errorReader) protected override void LogOutput(StreamReader outputReader)
{ {
if (!OutFileDisabled)
new Thread(() => CopyStreamWithRotation(outputReader, OutFilePattern)).Start(); new Thread(() => CopyStreamWithRotation(outputReader, OutFilePattern)).Start();
}
if (!ErrFileDisabled) protected override void LogError(StreamReader errorReader)
{
new Thread(() => CopyStreamWithRotation(errorReader, ErrFilePattern)).Start(); new Thread(() => CopyStreamWithRotation(errorReader, ErrFilePattern)).Start();
} }