gpt4 book ai didi

c# - log4net 仅在调用 XmlConfigurator.Configure() 时有效

转载 作者:IT王子 更新时间:2023-10-29 04:37:51 26 4
gpt4 key购买 nike

我明白 this question has been asked several times ,但不幸的是,我无法使我的日志记录配置正常工作。我一定是在某个地方犯了一些非常小的错误。

我有一个 .NET 4.5 MVC 4/EF 5 Web 应用程序,我正在尝试让日志记录工作。该解决方案有两个项目,一个用于 DAO 和模型对象,一个用于网站。App.Config 文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="RebuildingTogetherEntities" connectionString="stuff..."/>
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
</entityFramework>
<log4net configSource="Log.config" />
</configuration>

同样的 log4net 部分也被复制到 Web.Config 文件中。

我将以下内容添加到两个 AssemblyInfo.cs 文件中:

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

两个 Log.Config 文件的“复制到输出目录”都设置为 true。

我似乎可以将日志记录附加到输出文件的唯一方法是在第一个日志记录语句运行之前调用 XmlConfigurator.Configure()。我想我可以在第一次获得记录器时编写一个外观来执行此操作,但感觉不对。

如何在不手动调用 XmlConfigurator 的情况下初始化记录器?

最佳答案

我遇到了完全相同的问题。正如您正确指出的那样,当您在 AssemblyInfo.cs 中包含该行时,您不需要显式调用 XmlConfigurator。当第一次使用 log4net 是在没有该行的程序集中时,问题就来了。就我而言,我使用的是 Topshelf.Log4Net NuGet 包,我的应用程序记录的第一行日志就是通过它。

您可以在您的应用程序的早期记录一行,或者如果您不需要记录任何内容,请执行我所做的并在应用程序的入口点添加以下内容

LogManager.GetLogger(typeof(Program));

关于c# - log4net 仅在调用 XmlConfigurator.Configure() 时有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16766236/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com