NLog不能在IIS上工作

时间:2012-01-13 11:53:25

标签: asp.net-mvc nlog

我在项目中添加了NLog。按照说明我创建了NLog.config。

<?xml version="1.0" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <targets>
        <target name="file" xsi:type="File"
            layout="${longdate} ${logger} ${message}" 
            fileName="${basedir}/${shortdate}.log" />
    </targets>

    <rules>
        <logger name="*" minlevel="Debug" writeTo="file" />
    </rules>
</nlog>

然后只记录一些东西。

var logger = LogManager.GetCurrentClassLogger();
logger.Info("xxxx");

使用开发人员Web服务器可以正常工作,但是当我将应用程序发布到IIS时,不会创建任何日志。

4 个答案:

答案 0 :(得分:8)

NLog.config是否将“复制到输出目录”属性设置为“始终复制”?

答案 1 :(得分:2)

在IIS中编辑网站权限,并在“安全性”选项卡下为IIS_IUSRS组赋予完全权限。 在“应用程序”中,“池”找到您的应用程序正在使用的池,并设置一些特定用户。

答案 2 :(得分:0)

Steps using IIS Images to assign a user.

我已经提到了使用IIS图像分配用户的步骤。

答案 3 :(得分:0)

问题之一是 IIS 没有写入日志文件的权限。如果您确定您的版本中有 NLog.Config 并且日志文件仍未生成,则授予对 IIS 应用程序池的完全访问权限。

您可以将“throwExceptions="true”添加到您的 nlog 配置中以查看问题所在。应该是这样的:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
      autoReload="true"
      throwExceptions="true"
      internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">

在您确定是访问问题后,您可以执行以下操作以访问您的应用程序池。

首先找到您的应用程序池(以防您不知道):

  • 在 IIS 管理器上右键单击您的网页名称。
  • 在“管理网站”选项卡上点击“高级设置”。
  • 您将在顶部看到应用程序池名称。

授予对应用程序池的完全访问权限:

  • 在 IIS 管理器上右键单击您的网页名称。
  • 点击编辑绑定。
  • 在打开的窗口中选择安全标签。
  • 点击编辑按钮
  • 选择您的应用程序池名称。 (如果您的应用程序池不在列表中,那么您必须添加它
  • 然后在下方选择完全访问权限,然后选择确定并离开。