在我的 C# 程序中,我打算像这样捕获每个潜在的日志:
public static void Main(string[] args)
{
using (new ConsoleToFile("./output.log"))
{
doMain(args, parser, options, directConsole);
}
}
ConsoleToFile 是这个经典的:
public class ConsoleToFile : IDisposable
{
private readonly StreamWriter fileOutput;
private readonly TextWriter oldOutput;
/// <summary>
/// Create a new object to redirect the output
/// </summary>
/// <param name="outFileName">
/// The name of the file to capture console output
/// </param>
public ConsoleToFile(string outFileName)
{
oldOutput = Console.Out;
fileOutput = new StreamWriter(
new FileStream(outFileName, FileMode.Create)
);
fileOutput.AutoFlush = true;
Console.SetOut(fileOutput);
Console.SetError(fileOutput);
}
// Dispose() is called automatically when the object
// goes out of scope
#region IDisposable Members
public void Dispose()
{
Console.SetOut(oldOutput); // Restore the console output
fileOutput.Close(); // Done with the file
}
#endregion
}
关于我的代码中生成的输出,这很好用!
但我也包含了来自 apache.fop 的 fop.dll(我使用 IKVM 生成它)。
问题: 这个 fop-DLL 注销到控制台,就好像重定向不存在一样。
例如经典的令人讨厌的警告,例如:
“警告:padding-* 属性不适用于 fo:table-header,但发现填充的非零值。”
知道如何将这些日志记录重定向到我的文件“output.log”吗?