[ad_1]
私はしばらくの間この問題を抱えています。 コンソール アプリを起動すると、log4net が同じエラーを数回スローし続けます。 この問題を回避するためにさまざまな方法を試しましたが、常に発生します。
コード:
public class Announcer { private static readonly ILog _log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); static void Main() { _ = XmlConfigurator.Configure(LogManager.GetRepository(Assembly.GetEntryAssembly()), new FileInfo("log4net.config")); _ = Log4NetUtility.SetLoggingLevel(DefaultLoggingLevel, LogManager.GetRepository()); ... } }
アプリ構成ファイル:
<?xml version="1.0" encoding="utf-8"?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /> </startup> <appSettings> <add key="log4net.Internal.Debug" value="false" /> <add key="ClientSettingsProvider.ServiceUri" value="" /> </appSettings> <system.web> <membership defaultProvider="ClientAuthenticationMembershipProvider"> <providers> <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" /> </providers> </membership> <roleManager defaultProvider="ClientRoleProvider" enabled="true"> <providers> <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" /> </providers> </roleManager> </system.web> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
構成ファイル (「log4net.config」):
<?xml version = "1.0" encoding = "utf-8" ?> <!-- Log4net Logging Setup --> <log4net update="Overwrite"> <appender name="console" type="log4net.Appender.ColoredConsoleAppender"> <mapping> <level value="ERROR" /> <foreColor value="White" /> <backColor value="Red" /> </mapping> <mapping> <level value="INFO" /> <foreColor value="Green" /> </mapping> <mapping> <level value="DEBUG" /> <backColor value="Cyan" /> </mapping> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%-5level %-35logger{2} [%thread] %message%newline" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="DEBUG" /> </filter> </appender> <appender name="logfile" type="log4net.Appender.RollingFileAppender"> <file value="TestFiles\NewsAnnouncer.log" /> <appendToFile value="true" /> <rollingStyle value="Composite" /> <datePattern value="yyyyMMdd" /> <maxSizeRollBackups value="5" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %-5level %-35logger{2} [%thread] %message%newline" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="DEBUG" /> </filter> </appender> <appender name="DebugAppender" type="log4net.Appender.DebugAppender"> <immediateFlush value="true" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%-5level %-35logger{2} [%thread] %message%newline" /> </layout> </appender> <root> <level value="INFO" /> <appender-ref ref="console" /> <appender-ref ref="logfile" /> </root> </log4net>
エラー(への呼び出し直後に発生します LogManager.GetRepository()
作られています):
log4net:ERROR Exception while reading ConfigurationSettings. Check your .config file is well formed XML. System.Configuration.ConfigurationErrorsException: Configuration system failed to initialize ---> System.Configuration.ConfigurationErrorsException: Unrecognized configuration section system.web. (C:\Programming\NewsAnnouncer-System\NewsAnnouncer\NewsAnnouncer\bin\Debug\net6.0\NewsAnnouncer.dll.config line 10) at System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(Boolean ignoreLocal) at System.Configuration.BaseConfigurationRecord.ThrowIfParseErrors(ConfigurationSchemaErrors schemaErrors) at System.Configuration.ClientConfigurationSystem.EnsureInit(String configKey) --- End of inner exception stack trace --- at System.Configuration.ConfigurationManager.PrepareConfigSystem() at System.Configuration.ConfigurationManager.GetSection(String sectionName) at System.Configuration.ConfigurationManager.get_AppSettings() at log4net.Util.SystemInfo.GetAppSetting(String key)
注: NewsAnnouncer はアプリケーションのアセンブリ名であるため、 NewsAnnouncer.dll.config
.
奇妙なことは、log4net が log4net.config ファイルを正しく使用して終了することです。 ロギング メッセージは、必要な場所に移動し、必要に応じてフォーマットされます。 しかし、アプリを起動するたびに、そのエラー メッセージが 5 回繰り返されます。
私が試したこと:
私はありとなしで試しました
<configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections>
の第一子として <configuration>
アプリ構成の要素。
私は log4net のドキュメントを見て、その例を試し、ネットで問題を検索しました。
ほとんどの答えは、 [assembly:…] 属性(私は役に立たなかった)、またはlog4net構成をapp.configファイルに直接含めます。 しかし、これらは私が追求したい手段ではありません。最終的には、ログファイルの場所を構成可能にしたいと考えています。そのため、実行時にファイルの場所を設定できるこの形式を選択しました。
報告されたエラーが表示される理由は誰にも分かりますか?
解決策 1
引用:認識されない構成セクション
system.web
.
問題は、あなたが持っているということです <system.web>
アプリ構成ファイルのセクション。
そのセクションは、.NET Framework で ASP.NET を構成するために使用されました。 .NET 6 アプリケーションやコンソール アプリケーションには適用されません。
サポートされていないセクションを削除して、エラーを取り除きます。
注意: また、削除する必要がある場合があります。 <runtime>
これは、.NET 6 アプリケーションにも当てはまらないためです。
[ad_2]
コメント