0

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

4

0 に答える 0