c# - log4net配置问题

标签 c# .net configuration logging log4net

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

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

到 AssemblyInfo.cs

当我以 Debug模式运行应用程序时,lognet 正在记录。当我将应用程序发布到 IIS 时,lognet 没有记录任何内容。

我还有以下内容:

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

这是什么原因?

最佳答案

可能是 AppPool 身份用户没有写入日志文件/目录的权限(假设您使用的是文件附加程序)。

检查 AppPool 用户帐户的方法如下:

  • 开始->运行->“compmgmt.msc”(或右击“我的电脑”并选择“管理”)
  • 导航到“服务和应用程序”->“Internet 信息服务 (IIS) 管理器”
  • 在“网站”下找到您的站点,然后右键单击 -> 属性
  • 在“虚拟目录”选项卡上,记下“应用程序池”设置
  • 取消此对话框,然后导航到 IIS 管理器中的“应用程序池”
  • 右键单击上面记下的应用程序池,选择“属性”,然后选择“身份”选项卡
  • 这显示了运行网站的用户帐户。
  • 现在,我的建议是检查您尝试写入日志的文件夹权限,并确保应用程序池用户对该文件夹具有写入权限。

如果这不是问题,我建议打开 log4net internal debugging :

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="log4net.Internal.Debug" value="true"/>
    </appSettings>
</configuration>

关于c# - log4net配置问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2796047/

相关文章:

configuration - Symfony2 : updating just one vendor bundle

spring - 如何强制 Spring Boot 重定向到 https 而不是 http?

c# - 从具有特定其他属性值的 JObject 中提取 JObject 属性

C# 计算一个时间跨度内的时间跨度

c# - Visual Studio 2010/2012 : 32 or 64 bit?

c# - 如何在 Windows XP 上的 .Net 4 中向禁用 SSL3 的服务器发出 TLS 请求?

c# - 为什么 TinyMCE 不能与 asp 文本框一起使用,而是与 html textarea 一起使用?

c# - 如何从 GUID 生成 8 字节的唯一 ID?

.NET 内存泄漏 - System.WeakReference 对象累积

ruby-on-rails - 每当 gem 时,schedule.rb 中的配置文件与 Rails 一起使用?