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

时间:2014-04-17 22:14:37

标签: testing logging clojure log4j leiningen

如何根据leiningen测试元数据使用不同的log4j属性文件?我有将调试日志输出输出到文件的函数。通常,有很多数据被写入此调试日志文件,从而减慢了功能。正常运行的应用程序将没有调试文件写入,所以我想在没有该文件写入的情况下对该函数的正常运行进行基准测试。对于基准测试,我正在使用标准。我们假设基准deftest定义的元数据是:benchmark

1 个答案:

答案 0 :(得分:2)

基于测试元数据执行此操作的麻烦在于,所有测试都在单个JVM实例中运行,并且在JVM中动态修改Log4j配置并不容易。相反,我会在project.clj中设置配置文件以默认禁用:benchmark测试,并为运行基准设置单独的配置文件。假设您已将:resource-paths设置为包含调试级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