【问题标题】:log4net with .NET Framework 4.6.2带有 .NET Framework 4.6.2 的 log4net
【发布时间】:2020-01-24 14:53:37
【问题描述】:

我的新 Windows 10 必须仅使用 .NET Framework 4.6.2 安装 Visual Studio 2019。我还在 VS Installer 中提供了所有可用的框架,包括框架 4.5.2,但无法选择它,所以我使用我最新的 log4net 包选择了 4.6.2。但现在它在使用应用程序时停止创建我的日志文件。

查看 Apache Log4Net 上的“支持的框架”页面,它没有列出 4.6 或 4.6.2。这是否意味着它根本不支持。试图克隆我自己编译的 github repo,但它仍然没有创建我的日志文件。

.NET 4.6.x 的任何已知问题?

更新代码: Globals.asax.cs 包含以下内容:

    protected void Application_Start(object sender, EventArgs e)
    {
        log4net.Config.XmlConfigurator.Configure();
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
    }

web.config 包含以下内容:

  <configSections>
   <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
  </configSections>

还有这个:

 <log4net>
   <root>
    <level value="ALL"/>
    <appender-ref ref="file"/>
  </root>
  <appender name="file" type="log4net.Appender.RollingFileAppender">
   <encoding value="utf-8"/>
   <file value="log\LOG_"/>
   <appendToFile value="true"/>
   <rollingStyle value="Date"/>
   <maxSizeRollBackups value="5"/>
   <maximumFileSize value="15MB"/>
   <staticLogFileName value="false"/>
   <datePattern value="yyyy-MM-dd'.log'"/>
   <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %level %logger - %message%newline"/>
   </layout>
 </appender>
</log4net>

我的 cs 文件调用它来记录:

log4net.LogManager.GetLogger(HttpContext.Current.Session.SessionID).Debug(message);

【问题讨论】:

  • 没有问题,4.6 并不是全新的。有大量的博客文章和文章展示了如何使用 log4net。您没有发布任何代码,因此无法说出问题所在 - 您使用的是配置文件吗?代码配置?可能是配置文件丢失了吗?
  • 此外,您可能根本没有使用 4.6 - 4.x 版本是二进制替换,这意味着通过 Visual Studio 安装或 Windows 更新部署的任何新版本都会替换现有版本。即使您认为您的目标是 4.5,您也可能在更新的运行时上运行
  • 您是否授予应用程序池身份写入权限以创建日志文件夹和文件?如果不是,它怎么能把日志写到磁盘。
  • @LexLi 它是您创建池时的默认用户。但是查看日志文件夹上的属性对话框,我无法向该用户授予任何权限。怎么做?即使在对象资源管理器上搜索它也不会给我任何结果。
  • @LexLi 好的,我将 DefaultAppPool 添加到具有完全访问权限的权限列表中,但日志文件夹中仍然没有创建文件。刚刚检查了另一个服务器,另一个应用程序也在使用 .net 4.6.2 的 log4net 上运行,并且正在那里创建文件。完全相同的 log4net 配置和相同的权限,除了安全选项卡设置之外,这可能是一些特定于 Windows 的问题吗?

标签: asp.net .net log4net


【解决方案1】:

很奇怪。根目录中缺少 Global.asax 文件。由于 Global.asax.cs 被编译到 DLL 中,我认为它无论如何都会运行,但我们需要保留 Global.asax,其内容就是这样:

<%@ Application Codebehind="Global.asax.cs" Inherits="MyNamespace.App.Global" Language="C#" %>

没有这个,所有对 log4net 有 .Configure() 调用的 Application_Start 都不会被调用。不知道。

【讨论】:

    猜你喜欢
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    相关资源
    最近更新 更多