log4net.Util.SystemInfo bug?

他のアセンブリから起動されたアセンブリでlog4netlog4net.Appender.RollingFileAppenderクラスを使用すると、正しく動作しない場合がある。事象としてはアペンダによるログファイルの出力先が、

起動元アセンブリのフルパス.exe/起動されたアセンブリが使用している、log4net.Appender.RollingFileAppenderが使用する相対パス

と、おかしな事になってしまうのだ。具体的な例で書くと、起動元アセンブリを"c:\fooAssembly.exe"、そこから起動されるアセンブリが使用する、アペンダの出力先が"./log/child.log"だとすると合成されるパスが

c:/fooAssembly.exe/./log/child.log

と認識されてしまう。当然ながらこれは不正なパスなので、RollingFileAppenderはログ出力先のディレクトリの生成に失敗してしまうのだ。

log4net.Util.SystemInfo#ConvertToFullPathメソッドで返しているパスがおかしいぽい、って所までは解ったんだけど、二つのアセンブリに跨がる特殊なケースだし、フィードバックしても、期待できなそう。