首页 > 解决方案 > log4net-RollingFileAppender-XmlLayoutSchemaLog4j 未登录.Net Core 3

问题描述

我正在使用 .Net Core 3 预览版。Visual Studio 2017。我尝试通过配置文件和代码设置 log4net 的配置,正在创建该文件,但它没有记录任何消息。

我的配置文件:

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
  </configSections>
  <appSettings>
    <add key="log4net.Internal.Debug" value="true"/>
  </appSettings>

<log4net>
  <root>
    <level value="All"/>
    <appender-ref ref="LogFileAppender"/>
    <appender-ref ref="ColoredConsoleAppender"/>
    <appender-ref ref="DebugAppender" />
  </root>
  <appender name="DebugAppender" type="log4net.Appender.DebugAppender">
    <immediateFlush value="true" />
    <layout type="log4net.Layout.SimpleLayout" />
  </appender>
  <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
    <file type="log4net.Util.PatternString" value="LogFile.xml" />
    <appendToFile value="true" />
    <datePattern value="yyyyMMdd" />
    <rollingStyle value="Date" />
    <layout type="log4net.Layout.XmlLayoutSchemaLog4j">
      <locationInfo value="true" />
    </layout>
  </appender>
  <appender name="ColoredConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] %-5level %logger: %message%newline"/>
    </layout>
  </appender>
</log4net>
</configuration>

带有 XmlLayoutSchemaLog4j 的 RollingFileAppnder 不起作用。RollingFileAppnder 和其他 Fileappender 工作的其他参数。我已经下载了一个示例并尝试在代码中将其配置为 XmlLayoutSchemaLog4j:

Hierarchy hierarchy = (Hierarchy)logRepository;


        var patternLayout = new XmlLayoutSchemaLog4j();
        patternLayout.LocationInfo = true;
        patternLayout.ActivateOptions();

        var roller = new RollingFileAppender
        {
            AppendToFile = true,
            MaximumFileSize = "2MB",
            File = "logger.xml",
            PreserveLogFileNameExtension = true,
            MaxSizeRollBackups = 10,
            RollingStyle = RollingFileAppender.RollingMode.Size,
            Layout = patternLayout
        };
        roller.ActivateOptions();
        hierarchy.Root.AddAppender(roller);

        hierarchy.Root.Level = Level.Info;
        hierarchy.Configured = true;

我没有从 log4net 得到调试错误。任何想法?

标签: c#.net-corelog4netrollingfileappender

解决方案


我不确定您是如何在 Startup.cs 和 Programs.cs 中初始化 Log4Net 但请使用以下示例作为参考。另外,也许您还需要像这里一样对 Log4Net 配置文件进行一些清理和移动代码配置

.NET Core 2.2 日志记录

.NET Core 2.2 Log4Net 示例


推荐阅读