ReSharper 7.1.1、NUnit 2.6.0、および log4net 1.2.10 を使用しています。
私の log4net 構成には、RollingFileAppender があります。
<appender name="file" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="%appdomain.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="0" />
<maximumFileSize value="5MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%utcdate{ISO8601} %-5level - %message%newline" />
</layout>
<threshold value="ALL" />
</appender>
単体テスト コードを実行すると、次のエラーが発生します。
log4net:ERROR XmlHierarchyConfigurator: Could not create Appender [file] of type [log4net.Appender.RollingFileAppender]. Reported error follows.
System.NotSupportedException: The given path's format is not supported.
at System.Security.Util.StringExpressionSet.CanonicalizePath(String path, Boolean needFullPath)
at System.Security.Util.StringExpressionSet.CreateListFromExpressions(String[] str, Boolean needFullPath)
at System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess access, AccessControlActions control, String[] pathListOrig, Boolean checkForDuplicates, Boolean needFullPath, Boolean copyPathList)
at System.IO.Path.GetFullPath(String path)
at log4net.Util.SystemInfo.ConvertToFullPath(String path)
at log4net.Appender.RollingFileAppender.ActivateOptions()
at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender(XmlElement appenderElement)
これは、log4net の%appdomain
値が AppDomain.CurrentDomain.FriendlyName の値から取得されるためです。
IsolatedAppDomainHost: MyProject.Tests
この AppDomain 名にはコロンが含まれているため、ファイル名に変換できません。つまり、%は次のようにappdomain.log
なります。IsolatedAppDomainHost: MyProject.Tests.log
回避策の提案を探しています:
- 単体テスト プロジェクトのためだけに、AppDomain の値を何らかの方法でオーバーライドできますか?
log4net.Util.PatternString
コロンを削除するように変更できますか?- この問題を回避するために ReSharper テストランナーを構成できますか?
- これは、使用しているツールの新しいバージョンで修正されていますか? 他の場所でこの問題についての言及は見つかりませんでした。
そうでない場合は、Gallio または log4net のいずれかにプル リクエストを送信してみることができます。
ありがとう!