当我在Eclipse(Alt + Shift + X,T)中快速运行测试或从运行配置运行时,我正在努力让Eclipse识别我的日志记录配置.我真的不关心从测试本身进行日志记录,但实际上只是提供配置,以便执行的任何日志语句都不会失败.
Failed to instantiate [ch.qos.logback.classic.LoggerContext]
Reported exception:
java.lang.NoSuchMethodError: ch.qos.logback.core.util.Loader.getResourceOccurrenceCount(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/util/Set;
at ch.qos.logback.classic.util.ContextInitializer.multiplicityWarning(ContextInitializer.java:160)
at ch.qos.logback.classic.util.ContextInitializer.statusOnResourceSearch(ContextInitializer.java:183)
at ch.qos.logback.classic.util.ContextInitializer.getResource(ContextInitializer.java:141)
at ch.qos.logback.classic.util.ContextInitializer.findURLOfDefaultConfigurationFile(ContextInitializer.java:130)
at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:148)
at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:85)
at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55)
at org.slf4j.LoggerFactory.bind(LoggerFactory.java:144)
at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:123)
at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:337)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:287)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:309)Run Code Online (Sandbox Code Playgroud)
我在src/test/resources中有logback-test.xml,并将其配置为具有target/test-classes输出的源文件夹.

我甚至为我的项目编辑了JUnit的Run Configuration的Classpath,并在那里添加了test-classes文件夹,但它没有帮助.

有什么简单的东西我错过了吗?我似乎没有回忆过过去和其他项目有过这个问题.
我正在努力想出通过REST服务捕获审计信息的"正确"方法.假设我有一个Employee资源的内部REST API.我想在添加/修改/删除Employee时捕获事物,例如执行更改的用户,用户使用的应用程序,完成时间(假设这可能是异步的,因此用户的操作可能发生在与REST调用不同的时间)等.此外,发起更改的用户可能不是进行REST调用的经过身份验证的用户.
我的想法是这些属性不属于请求的主体 - 这意味着它们不是Employee对象的属性.它们不是可以在GET上检索和返回的东西,因此它们不应该在POST/PUT中.它们也不属于参数,因为参数应该用于指定有关Employees的其他内容或者对Employees的GET请求的搜索/过滤器Critiera.
我目前的想法是让客户端在HTTP标头中指定此信息.这使得Employee资源的URL参数和正文保持纯净.这是合适的标题使用吗?还有其他我没看到的选择吗?
audit ×1
audit-trail ×1
eclipse ×1
http-headers ×1
java ×1
junit ×1
logback ×1
rest ×1
unit-testing ×1