log4net的RollingFileAppender和XmlLayoutSchemaLog4j在.NET Core 3中无法记录日志

4
我正在使用 .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>

RollingFileAppender与XmlLayoutSchemaLog4j不兼容。其他RollingFileAppender和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中没有获得任何调试错误。 有什么想法吗?

没有对Log4net进行任何活动开发。甚至还没有研究与.net standard 2.0相关的事情。https://github.com/apache/logging-log4net/pull/51 - Kamran Shahid
1个回答

2
我不确定你在 Startup.cs 和 Programs.cs 中如何初始化 Log4Net,但可以参考以下示例。另外,也许你需要进行一些清理和将代码配置移动到 Log4Net 配置文件中,就像这里一样。
.NET Core 2.2 日志记录
.NET Core 2.2 Log4Net 示例

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接