如何使用 dotnet test 和 log4net 在控制台和 trx 文件中记录不同数量的信息?

问题描述

我正在尝试使用 dotnet test 并尝试在控制台窗口中使用最少的日志,但在之后的 trx 文件中使用更多。我首先尝试像这样简单地运行它:

dotnet test myDll.dll --logger trx --result-directory TestResult --verbosity n

但随后它记录了很多信息(实际上我写给 Log.InfoLog.Debug 的所有信息)。然后我尝试了另一个级别的冗长:

dotnet test myDll.dll --logger trx --result-directory TestResult --verbosity minimal

但是这样它甚至不显示测试是否通过/失败(在测试运行时),我必须等到运行完成才能获得不好的摘要

然后我开始查看我的 log4net 配置文件,看看我是否可以更改某些内容。它看起来像这样:

<log4net>
  <!-- A1 is set to be a ConsoleAppender -->
  <appender name='A1' type='log4net.Appender.ConsoleAppender'>
    <!-- A1 uses PatternLayout -->
    <filter type='log4net.Filter.LoggerMatchFilter'>
      <loggerToMatch value='DebugLogger' />
      <acceptOnMatch value='false' />
    </filter>

    <filter type="log4net.Filter.LevelRangeFilter">
      <levelMin value="DEBUG" />
      <levelMax value="WARN" />
    </filter>

    <layout type='log4net.Layout.PatternLayout'>
      <conversionPattern value='%date: %logger: %message%newline' />
    </layout>
  </appender>

  <appender name='RollingFileAppender' type='log4net.Appender.RollingFileAppender'>
    <file value='TestResult\\TestResultOut.txt' />
    <appendToFile value='true' />
    <rollingStyle value='Size' />
    <maxSizeRollBackups value='10' />
    <maximumFileSize value='100MB' />
    <staticLogFileName value='true' />
    <filter type='log4net.Filter.LoggerMatchFilter'>
      <loggerToMatch value='DebugLogger' />
      <acceptOnMatch value='false' />
    </filter>
    <layout type='log4net.Layout.PatternLayout'>
      <conversionPattern value='%date: %logger: %message%newline' />
    </layout>
  </appender>

  <!-- Set root logger level to DEBUG and its only appender to A1 -->
  <root>
    <level value='DEBUG' />
    <appender-ref ref='A1' />
    <appender-ref ref='RollingFileAppender' />
  </root>
</log4net>

我是这样加载的:

var logRepo = LogManager.GetRepository(Assembly.GetEntryAssembly());
XmlConfigurator.Configure(logRepo,new FileInfo(LogFileName));

所以我可以将 levelRangeFilter 中的 levelMin 更改为 INFO,这样我的控制台就会干净很多。但问题是 TRX 文件将获得相同的次要信息,这使得调试变得困难。我也尝试过多个不同的记录器,但没有任何区别:

dotnet test myDll.dll --logger trx;verbosity=detailed --logger console;verbosity=normal --result-directory TestResult

所以我的问题是,我如何设置我的 log4net 以便它对我发送到 verbositydotnet test 做出反应,或者我如何制作它以便我的 TRX 文件包含所有信息/调试日志但它不会在控制台中显示那些?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...