log4net未在EPiServer中记录自定义日志

时间:2012-10-04 20:20:25

标签: c# log4net episerver

我在EPiServer中遇到log4net问题。它记录了EPiServer的东西,NHibernate的东西,但不是我的自定义日志。试图显式配置记录器以记录我的命名空间中的所有内容:

<logger name="My.Website.Business">
    <level value="All" />
</logger>

我正在我的自定义类中定义记录器,如下所示:

ILog log = LogManager.GetLogger(typeof(MyClass));

并称之为:

log.Error("Some error");

我还启用了log4net日志记录,看看启动时会发生什么,但没有错误或奇怪的行为。它甚至创建了在config中定义的记录器。我还尝试为我的记录器定义其他appender,但它只是创建空文件而不记录任何内容。

2 个答案:

答案 0 :(得分:2)

episerver日志记录中存在一个历史悠久的错误:如果您在global.asax中声明了一个静态(类级别)log4net日志对象,则您的自定义日志记录都不起作用,只有episerver内部日志记录。

如果需要在global.asax中记录内容,请在方法内声明记录器。在其他类中,您可以像往常一样静态声明它。

答案 1 :(得分:0)

log4net无法正常工作的原因是log4net的不同版本。我的应用程序引用了log4net 1.2.11(2.0.0),但EPiServer与1.2.10一起使用。 我们正在使用NuGet来安装/更新软件包,有人将log4net更新到更新的版本。 因此请注意为EPiServer和应用程序使用相同的log4net版本。