我已经为我的项目添加了一个log4net实现,但它根本没有记录任何内容
在我的web.config
中<log4net>
<appender name="FileAppender" type="log4net.Appender.SitecoreLogFileAppender, Sitecore.Logging">
<file value="C:\\inetpub\\wwwroot\\Onboarding\\data\\logs\\log.{date}.txt" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%4t %d{ABSOLUTE} %-5p %m%n" />
</layout>
<encoding value="utf-8" />
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="FATAL" />
</filter>
</appender>
</log4net>
在我的global.asax中:
void Application_Start(object sender, EventArgs e)
{
log4net.Config.XmlConfigurator.Configure();
}
在我记录错误的类(在类级别)
ILog log = LogManager.GetLogger(System.Reflection.MethodBase
.GetCurrentMethod().DeclaringType);
然后在方法本身:
_logger.Log(AusSuperOnboarding.Business.Logging.Enum.Level.Fatal,
GetType().Name, "Exception thrown in SendMessage()", null);
答案 0 :(得分:1)
确保运行网站代码的服务帐户用户具有对路径的写访问权限:C:\ inetpub \ wwwroot \ Onboarding \ data \ logs
如果您使用的是IIS网站,则可以检查与该网站关联的应用程序池,然后右键单击应用程序池并选择高级设置,您可以在“身份”字段中查看应用程序池标识。
查看日志文件夹的属性,选择“安全”选项卡,单击“编辑”并添加应用程序池标识用户,并确保&#34;修改&#34;勾选复选框
答案 1 :(得分:1)
您的配置不完整。
您已定义了appender,但没有使用它们的记录器。这意味着当您创建一个记录器时,它没有与之关联的appender,因此没有记录。
在你的配置中添加一个root
元素:由于log4net记录器是分层的,你创建的任何记录器都将从它继承appender:
<root>
<level value="ALL" />
<appender-ref ref="FileAppender" />
<root>