Testing 基于leiningen测试元数据的log4j属性文件?

Testing 基于leiningen测试元数据的log4j属性文件?,testing,logging,clojure,log4j,leiningen,Testing,Logging,Clojure,Log4j,Leiningen,如何使用基于leiningen测试元数据的不同log4j属性文件?我有一些函数可以将调试日志输出到文件。通常,会有大量数据写入此调试日志文件,这会降低功能的运行速度。应用程序的正常运行不会写入调试文件,因此我希望在不写入文件的情况下对函数的正常运行进行基准测试。对于基准测试,我使用criterium。让我们假设基准测试deftest定义的元数据是:基准测试基于测试元数据执行此操作的问题是所有测试都在单个JVM实例中运行,在JVM中动态修改Log4j配置并不容易。相反,我会在您的project.c

如何使用基于leiningen测试元数据的不同log4j属性文件?我有一些函数可以将调试日志输出到文件。通常,会有大量数据写入此调试日志文件,这会降低功能的运行速度。应用程序的正常运行不会写入调试文件,因此我希望在不写入文件的情况下对函数的正常运行进行基准测试。对于基准测试,我使用criterium。让我们假设基准测试
deftest
定义的元数据是
:基准测试

基于测试元数据执行此操作的问题是所有测试都在单个JVM实例中运行,在JVM中动态修改Log4j配置并不容易。相反,我会在您的
project.clj
中设置配置文件,默认情况下禁用
:benchmark
测试,并为运行基准设置单独的配置文件。假设您已将
:资源路径设置为包含调试级别
log4j.properties
文件,那么您的基准配置文件可以根据需要设置类路径或系统配置文件以使用不同的文件。例如:

(defproject myproject
  ...
  :test-selectors {:default (complement :benchmark)}
  :profiles {
    :benchmark {
      :test-selectors {:default :benchmark}
      :jvm-opts ["-Dlog4j.configuration=log4j-benchmark.properties"]
    }
  })
然后,您可以使用以下工具运行基准测试:

 > lein with-profile +benchmark test

嗯,我已经在资源/共享文件夹中设置了log4j.properties文件。我如何将其与你的建议结合起来<代码>:资源路径[“资源/共享”]
在这两种情况下是否移动到jvm选项?或者创建一个可以覆盖的资源/基准文件夹?如果文件夹策略起作用,我认为那将是最好的,因为它可以应用于除log4j.properties之外的其他事情。您认为呢?在默认情况下,您不需要严格地使用jvm选项来使用log4j.properties,尽管这不会有什么坏处。创建一个单独的resources/benchmark文件夹可以很好地工作,只要它位于有效类路径上的默认resources/shared文件夹前面。