log4net配置问题

3

我有一个单独的Log4Net.config文件。我添加了

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]

到AssemblyInfo.cs文件

当我以调试模式运行应用程序时,lognet记录了日志。但是当我将应用程序发布到IIS时,lognet不会记录任何内容。

我还有以下设置:

BasicConfigurator.Configure(); // in a method
private static readonly ILog _logger = LogManager.GetLogger(typeof(_Default)); // for the instance

这是什么原因呢?
1个回答

6
可能是应用程序池身份用户没有写入日志文件/目录的权限(假设您正在使用文件记录器)。
以下是检查AppPool用户帐户的方法:
  • 开始->运行-"compmgmt.msc"(或右键单击"My Computer"并选择"管理")
  • 导航到"服务和应用程序"->"Internet Information Service(IIS)管理器"
  • 在"Web Sites"下找到您的站点,右键单击->属性
  • 在虚拟目录选项卡上,记下"应用程序池"设置
  • 取消此对话框,并导航到IIS管理器中的"应用程序池"
  • 右键单击上面提到的应用程序池,选择"属性",然后选择"标识"选项卡
  • 这显示运行站点的用户帐户。
  • 现在,我的建议是检查您尝试写入日志的文件夹权限,并确保应用程序池用户具有写入访问权限。
如果这不是问题,我建议打开log4net内部调试
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="log4net.Internal.Debug" value="true"/>
    </appSettings>
</configuration>

Andy,请明确一下...你所说的"It could be that the AppPool identity user does not have permissions to write to the log file/directory (assuming you're using a file appender)."是什么意思?我该如何解决它? - Rodniko
Rodniko - 我更新了我的答案,展示如何检查这些权限。 - Andy White

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接