实现自定义log4net PatternLayout

时间:2015-07-26 13:11:49

标签: log4net-configuration log4net-appender

我需要log4net来生成CSV文件并且已发现this article that implements one。我的问题是如何将该代码集成到我的Web项目中。直接复制粘贴使ReSharper坚持要求命名空间从 CsvLogging '到' MyApp.Web '现在,web项目的程序集现在有了一个名为' CsvLogging '。

的类。

但log4net不满意并抛出下面粘贴的错误。

我的appender配置如下:

<layout type=" MyApp.Web.CsvLogging.CsvPatternLayout, MyApp.Web.CsvLogging">

...在我阅读this article on how to reference a custom pattern时,应该是正确的。

log4net:ERROR Failed to find type [ MyApp.Web.CsvLogging.CsvPatternLayout, MyApp.Web.CsvLogging]
System.IO.FileNotFoundException: Could not load file or assembly 'MyApp.Web.CsvLogging' or one of its dependencies. The system cannot find the file specified.
File name: 'MyApp.Web.CsvLogging'
   at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName, ObjectHandleOnStack type)
   at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean loadTypeFromPartialName)
   at System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark)
   at System.Type.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase)
   at log4net.Util.SystemInfo.GetTypeFromString(Assembly relativeAssembly, String typeName, Boolean throwOnError, Boolean ignoreCase)
   at log4net.Util.SystemInfo.GetTypeFromString(String typeName, Boolean throwOnError, Boolean ignoreCase)
   at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.CreateObjectFromXml(XmlElement element, Type defaultTargetType, Type typeConstraint)

1 个答案:

答案 0 :(得分:1)

您有一个名为MyApp.Web.CsvLogging的类,但您的程序集仍被命名为MyApp.Web 请尝试以下方法:

<layout type=" MyApp.Web.CsvLogging.CsvPatternLayout, MyApp.Web">

程序集的基本.net命名是"namespace.class, assembly"