私の 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」にリダイレクトする方法はありますか?