package ddth.dasp.framework.logging.base;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import ddth.dasp.common.logging.ILogWriter;
import ddth.dasp.common.utils.JsonUtils;
import ddth.dasp.framework.logging.AppLogEntry;
import ddth.dasp.framework.logging.IAppLogEngine;
/**
* This implementation of {@link IAppLogEngine} stores log via an instance of
* {@link ILogWriter} .
*
* @author ThanhNB
*/
public class LogWriterAppLogEngine implements IAppLogEngine {
public final static String FIELD_ID = "id";
public final static String FIELD_ACTION = "action";
public final static String FIELD_CLIENT_IP = "clientIp";
public final static String FIELD_MESSAGE = "message";
public final static String FIELD_NODE_ID = "nodeId";
public final static String FIELD_REQUEST_ID = "requestId";
public final static String FIELD_TAGS = "tags";
public final static String FIELD_TIMESTAMP = "timestamp";
public final static String FIELD_TYPE = "type";
public final static String FIELD_DATETIME = "datetime";
private ILogWriter logWriter;
/**
* Getter for {@link #logWriter}
*
* @return ILogWriter
*/
public ILogWriter getLogWriter() {
return logWriter;
}
/**
* Setter for {@link #logWriter}
*
* @param logWriter
* ILogWriter
*/
public void setLogWriter(ILogWriter logWriter) {
this.logWriter = logWriter;
}
/**
* {@inheritDoc}
*/
@Override
public void log(AppLogEntry entry) {
Map<String, Object> log = new HashMap<String, Object>();
log.put(FIELD_ID, entry.getId());
log.put(FIELD_ACTION, entry.getAction());
log.put(FIELD_CLIENT_IP, entry.getClientIp());
log.put(FIELD_MESSAGE, entry.getMessage());
log.put(FIELD_NODE_ID, entry.getNodeId());
log.put(FIELD_REQUEST_ID, entry.getRequestId());
log.put(FIELD_TAGS, entry.getTags());
log.put(FIELD_TIMESTAMP, entry.getTimestamp());
log.put(FIELD_TYPE, entry.getType());
log.put(FIELD_DATETIME, new Date().toString());
logWriter.writeLog(JsonUtils.toJson(log));
}
}