mirror of
https://github.com/nosqlbench/nosqlbench.git
synced 2025-02-25 18:55:28 -06:00
logging annotator module
This commit is contained in:
parent
6c0632fb8d
commit
ae419a26d0
@ -0,0 +1,60 @@
|
|||||||
|
package io.nosqlbench.engine.core.metrics;
|
||||||
|
|
||||||
|
import io.nosqlbench.nb.annotations.Service;
|
||||||
|
import io.nosqlbench.nb.api.annotations.Annotation;
|
||||||
|
import io.nosqlbench.nb.api.annotations.Annotator;
|
||||||
|
import io.nosqlbench.nb.api.config.ConfigAware;
|
||||||
|
import io.nosqlbench.nb.api.config.ConfigModel;
|
||||||
|
import io.nosqlbench.nb.api.config.ConfigReader;
|
||||||
|
import io.nosqlbench.nb.api.config.MutableConfigModel;
|
||||||
|
import org.apache.logging.log4j.Level;
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
|
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
@Service(value = Annotator.class, selector = "log")
|
||||||
|
public class LoggingAnnotator implements Annotator, ConfigAware {
|
||||||
|
|
||||||
|
private final static Logger logger = LogManager.getLogger("ANNOTATORS");
|
||||||
|
private final static Logger annotationsLog = LogManager.getLogger("ANNOTATIONS");
|
||||||
|
private Level level;
|
||||||
|
|
||||||
|
private final Map<String, String> tags = new LinkedHashMap<>();
|
||||||
|
|
||||||
|
public LoggingAnnotator() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void recordAnnotation(Annotation annotation) {
|
||||||
|
annotationsLog.log(level, annotation.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return The annotated selector of this implementation,
|
||||||
|
* ensuring that selector and name stay the same
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
String selector = LoggingAnnotator.class.getAnnotation(Service.class).selector();
|
||||||
|
return selector;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void applyConfig(Map<String, ?> providedConfig) {
|
||||||
|
ConfigModel configModel = getConfigModel();
|
||||||
|
ConfigReader cfg = configModel.apply(providedConfig);
|
||||||
|
String levelName = cfg.param("level", String.class);
|
||||||
|
this.level = Level.valueOf(levelName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ConfigModel getConfigModel() {
|
||||||
|
return new MutableConfigModel(this)
|
||||||
|
.defaultto("level", "INFO",
|
||||||
|
"The logging level to use for this annotator")
|
||||||
|
.asReadOnly();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user