我能够使用log4net和Cassini/IIS dev服务器写入日志文件,但是当我使用IIS7.5时,我无法写出文件。log4net - Appender不能在IIS7.5中工作
最初,我得到一个安全异常,所以我加了requirePermission="false"
,异常消失了,但没有创建文件。
根据IISM,信任级别已满。
我不能在自己的机器上工作,我想知道当我转移到ISP(discountASP)时会发生什么。
这里的log4net的设置:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false" />
</configSections>
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="log-file.txt" />
<appendToFile value="true" />
<encoding value="utf-8" />
<layout type="log4net.Layout.SimpleLayout" />
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="FileAppender" />
</root>
</log4net>
C#
log4net.Config.XmlConfigurator.Configure();
ILog Log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
Log.Info("This is a test");
任何线索?
ASP.NET 3.5,VS2008中,Windows 7,IIS7.5,log4net的1.2.10
编辑:
我使用的测试Web应用程序,在卡西尼运行在IIS7运行它。 5,它的工作,所以有一些特定于我的Web应用程序,阻止log4net运行。有 不断在其中进行,ELMAH,输出缓存,AJAX控制工具包,形式认证,ssl,url重写等等...除了每个添加到测试应用程序,有没有更好的方法来找出什么是导致log4net正常工作?
UPDATE:
我用AdoNetAppender远离文件权限问题路程,我仍然得到同样的结果。 AdoNetAppender适用于在Cassini和IIS上运行的测试应用程序,但它不适用于我的Web应用程序。获得以下例外:
System.Security.SecurityException:请求'System.Configuration.ConfigurationPermission,System.Configuration ...'类型权限失败。
更新2: 我错了,测试的webapp fileAppender在IIS7.5工作。发生这种情况的原因是:测试webapp fileAppender和AdoDotNetAppender都在Cassini/IIS dev中工作,但不在IIS7.5中工作。所以我认为这是IIS的问题,而不是我的web应用程序。
注意。我以Admin身份运行VS2008,但以非管理员身份登录到Windows 7。另外,我正在运行Windows 7家庭高级版,而不是专业版。
我授予NETWORK SERVICE对web根目录的完全权限,但仍未创建文件。也给了每个人完全的权限,没有文件。
由于adoDotNetAppender无法正常工作(但在开发IIS中),我认为除文件权限之外可能还有其他问题。
更新3:
我得到了它为FileAppender上IIS7工作。如果我加上:
<identity impersonate="true"
userName="zzz"
password="yyy" />
如果用户是管理员,它的工作原理。如果是我,不是管理员,它不是。所以这是一个权限问题。但是我确实授予了EVERYONE权限以前的文件所在的目录,并且它不起作用,所以在其他地方有权限设置。此外,虽然FileAppender现在可以与模拟一起使用,但AdoNetAppender stil不在IIS7中。我尝试添加:
<securityContext type="log4net.Util.WindowsSecurityContext">
<userName value="zzz" />
<password value="yyy" />
<domain value="aaa" />
</securityContext>
到AdoNetAppender部分,但仍然无法安静失败。
我为任何能够帮助我获得AdoNetAppender与IIS7.5一起工作的人添加了一笔赏金。
UPDATE 4:
我终于得到了堆栈跟踪的保持。这里是:
log4net:ERROR [AdoNetAppender] Failed in DoAppend
System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
at log4net.Util.LogicalThreadContextProperties.GetProperties(Boolean create)
at log4net.Core.LoggingEvent.CreateCompositeProperties()
at log4net.Core.LoggingEvent.CacheProperties()
at log4net.Core.LoggingEvent.FixVolatileData(FixFlags flags)
at log4net.Core.LoggingEvent.set_Fix(FixFlags value)
at log4net.Appender.BufferingAppenderSkeleton.Append(LoggingEvent loggingEvent)
at log4net.Appender.AppenderSkeleton.DoAppend(LoggingEvent loggingEvent)
The action that failed was:
LinkDemand
The type of the first permission that failed was:
System.Security.Permissions.SecurityPermission
The Zone of the assembly that failed was:
MyComputer
我有SQL事件探查器和没有任何它使SQL Server。此外,SQL Server帐户具有执行插入的适当权限。另外,我删除了SecurityContext部分,因为log4net无法识别它的一部分。
您是否尝试过提升应用程序的信任级别? 你能发布完整的堆栈跟踪吗? – 2010-06-27 06:01:27