我在项目中添加了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时,不会创建任何日志。
答案 0 :(得分:8)
NLog.config是否将“复制到输出目录”属性设置为“始终复制”?
答案 1 :(得分:2)
在IIS中编辑网站权限,并在“安全性”选项卡下为IIS_IUSRS组赋予完全权限。 在“应用程序”中,“池”找到您的应用程序正在使用的池,并设置一些特定用户。
答案 2 :(得分:0)
答案 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">
在您确定是访问问题后,您可以执行以下操作以访问您的应用程序池。
首先找到您的应用程序池(以防您不知道):
授予对应用程序池的完全访问权限: