/**
* @author: koushik
* This class is for future use: meant to replace direct logging in DataStore.class
* so as to reduce intensity of logging.
*
* TODO: may require additional methods.
*/
package qa.qcri.aidr.predict.common;
import org.apache.log4j.Logger;
public class MessageLogger {
private long lastSaveTime = 0;
private int saveNewDocumentsCount;
private static final long LOG_INTERVAL = Integer
.parseInt(TaggerConfigurator.getInstance().getProperty(
TaggerConfigurationProperty.LOG_INTERVAL_MINUTES)) * 60 * 1000;
private static Logger logger = Logger.getLogger(MessageLogger.class);
public MessageLogger() {}
public boolean canLog() {
++this.saveNewDocumentsCount;
if (0 == lastSaveTime) {
lastSaveTime = System.currentTimeMillis();
return true;
} else {
if ((System.currentTimeMillis() - lastSaveTime) > LOG_INTERVAL) {
return true;
} else {
return false;
}
}
}
public void logMessage(String message) {
try {
logger.info(message);
this.lastSaveTime = 0;
this.saveNewDocumentsCount = 0;
} catch (Exception e) {
logger.error("Exception", e);
}
}
public int getSaveNewDocumentsCount() {
return this.saveNewDocumentsCount;
}
public long getLastSaveTime() {
return this.lastSaveTime;
}
}