【发布时间】: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 的问题吗?