log4net.Util.SystemInfo bug?
他のアセンブリから起動されたアセンブリでlog4netのlog4net.Appender.RollingFileAppenderクラスを使用すると、正しく動作しない場合がある。事象としてはアペンダによるログファイルの出力先が、
起動元アセンブリのフルパス.exe/起動されたアセンブリが使用している、log4net.Appender.RollingFileAppenderが使用する相対パス
と、おかしな事になってしまうのだ。具体的な例で書くと、起動元アセンブリを"c:\fooAssembly.exe"、そこから起動されるアセンブリが使用する、アペンダの出力先が"./log/child.log"だとすると合成されるパスが
c:/fooAssembly.exe/./log/child.log
と認識されてしまう。当然ながらこれは不正なパスなので、RollingFileAppenderはログ出力先のディレクトリの生成に失敗してしまうのだ。
log4net.Util.SystemInfo#ConvertToFullPathメソッドで返しているパスがおかしいぽい、って所までは解ったんだけど、二つのアセンブリに跨がる特殊なケースだし、フィードバックしても、期待できなそう。