MPHEE: first pass at adding logging for applications
This commit is contained in:
parent
a344ee4d05
commit
6d27f6f07b
3 changed files with 68 additions and 8 deletions
|
|
@ -27,14 +27,7 @@ import software.amazon.kinesis.lifecycle.events.LeaseLostInput;
|
||||||
import software.amazon.kinesis.lifecycle.events.ProcessRecordsInput;
|
import software.amazon.kinesis.lifecycle.events.ProcessRecordsInput;
|
||||||
import software.amazon.kinesis.lifecycle.events.ShardEndedInput;
|
import software.amazon.kinesis.lifecycle.events.ShardEndedInput;
|
||||||
import software.amazon.kinesis.multilang.config.MultiLangDaemonConfiguration;
|
import software.amazon.kinesis.multilang.config.MultiLangDaemonConfiguration;
|
||||||
import software.amazon.kinesis.multilang.messages.CheckpointMessage;
|
import software.amazon.kinesis.multilang.messages.*;
|
||||||
import software.amazon.kinesis.multilang.messages.InitializeMessage;
|
|
||||||
import software.amazon.kinesis.multilang.messages.LeaseLostMessage;
|
|
||||||
import software.amazon.kinesis.multilang.messages.Message;
|
|
||||||
import software.amazon.kinesis.multilang.messages.ProcessRecordsMessage;
|
|
||||||
import software.amazon.kinesis.multilang.messages.ShardEndedMessage;
|
|
||||||
import software.amazon.kinesis.multilang.messages.ShutdownRequestedMessage;
|
|
||||||
import software.amazon.kinesis.multilang.messages.StatusMessage;
|
|
||||||
import software.amazon.kinesis.processor.RecordProcessorCheckpointer;
|
import software.amazon.kinesis.processor.RecordProcessorCheckpointer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -194,6 +187,10 @@ class MultiLangProtocol {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Optional<Boolean> messageLogged = message.filter(m -> m instanceof LogMessage)
|
||||||
|
.map(m -> (LogMessage) m)
|
||||||
|
.map(m -> m.getLogger().apply(m.getMessage()));
|
||||||
|
|
||||||
statusMessage = message.filter(m -> m instanceof StatusMessage).map(m -> (StatusMessage) m );
|
statusMessage = message.filter(m -> m instanceof StatusMessage).map(m -> (StatusMessage) m );
|
||||||
}
|
}
|
||||||
return this.validateStatusMessage(statusMessage.get(), action);
|
return this.validateStatusMessage(statusMessage.get(), action);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,62 @@
|
||||||
|
package software.amazon.kinesis.multilang.messages;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@Slf4j
|
||||||
|
public class LogMessage extends Message {
|
||||||
|
/**
|
||||||
|
* The name used for the action field in {@link Message}.
|
||||||
|
*/
|
||||||
|
public static final String ACTION = "log";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The shard id that this processor is getting initialized for.
|
||||||
|
*/
|
||||||
|
private String message;
|
||||||
|
private String logLevel = "info";
|
||||||
|
|
||||||
|
|
||||||
|
public LogMessage() {
|
||||||
|
this.message = "initialized";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default constructor.
|
||||||
|
*/
|
||||||
|
public LogMessage(String message) {
|
||||||
|
this.message = message;
|
||||||
|
log.info("Client logging: " + this.message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Function<String, Boolean> getLogger() {
|
||||||
|
switch (logLevel) {
|
||||||
|
case "debug": {
|
||||||
|
return (m) -> {
|
||||||
|
log.debug(m);
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
case "warn":
|
||||||
|
return (m) -> {
|
||||||
|
log.warn(m);
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
case "error":
|
||||||
|
return (m) -> {
|
||||||
|
log.error(m);
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
default:
|
||||||
|
return (m) -> {
|
||||||
|
log.info(m);
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -32,6 +32,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
@Type(value = ShutdownRequestedMessage.class, name = ShutdownRequestedMessage.ACTION),
|
@Type(value = ShutdownRequestedMessage.class, name = ShutdownRequestedMessage.ACTION),
|
||||||
@Type(value = LeaseLostMessage.class, name = LeaseLostMessage.ACTION),
|
@Type(value = LeaseLostMessage.class, name = LeaseLostMessage.ACTION),
|
||||||
@Type(value = ShardEndedMessage.class, name = ShardEndedMessage.ACTION),
|
@Type(value = ShardEndedMessage.class, name = ShardEndedMessage.ACTION),
|
||||||
|
@Type(value = LogMessage.class, name = LogMessage.ACTION),
|
||||||
})
|
})
|
||||||
public abstract class Message {
|
public abstract class Message {
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue