Hi, I have made a public class TriggerLevelEvaluator, which has a parameter - level when the isTriggeringRecord returns true. Furthermore, the user may set this level in the logging.properties file. I have just changes the SMTPHandler constructor a little bit:
String strEvaluatorClassName = manager.getProperty(prefix + ".evaluatorClass");
this.setEvaluatorClass(strEvaluatorClassName);
String strEvaluatorLevel = manager.getProperty(prefix + ".evaluatorLevel");
if (strEvaluatorLevel != null && strEvaluatorLevel.length() > 0 && this.evaluator instanceof TriggerLevelEvaluator) {
try {
Level triggerLevel = Level.parse(strEvaluatorLevel);
((TriggerLevelEvaluator)this.evaluator).setTriggerLevel(triggerLevel);
} catch (Exception e) {
reportError("Cannot set evaluatorLevel", e, DEFAULT_ERROR_CODE);
}
}
Now, when the evaluator class is TriggerLevelEvaluator (default), and the user sets the smtphandler..evaluatorLevel property (e.g. to SEVERE), then the mail is sent only when log with the given level (SEVERE) is logged. The default level is WARNING, so the behaviour is like before.