- if (isLogging) {\r
- // avoid StackOverflow if notification calls Log4j itself.\r
- return;\r
- }\r
-\r
- // FIXME: make it more generic\r
- if (event.getLoggerName().equals(\r
- WebServiceSlcExecutionNotifier.class.getName())) {\r
- return;\r
- }\r
-\r
- isLogging = true;\r
-\r
- try {\r
- SlcExecution slcExecution = (SlcExecution) project\r
- .getReference(REF_SLC_EXECUTION);\r
- if (slcExecution != null) {\r
- if (currentStepNotified) {\r
- slcExecution.getSteps().add(\r
- new SlcExecutionStep("LOG", event.getMessage()\r
- .toString()));\r
- currentStepNotified = false;\r
- }\r
- slcExecution.currentStep()\r
- .addLog(event.getMessage().toString());\r
- } else {\r
- // TODO: log before initialization?\r
- }\r
- } finally {\r
- isLogging = false;\r
+ Project project = (Project) MDC.get(AntConstants.MDC_ANT_PROJECT);\r
+ if (project == null)\r
+ throw new SlcException("No Ant project registered in Log4j MDC.");\r
+\r
+ SlcExecution slcExecution = getSlcExecution(project);\r
+ if (currentStepNotified) {\r
+ slcExecution.getSteps().add(\r
+ new SlcExecutionStep(event.getMessage().toString()));\r
+ currentStepNotified = false;\r
+ } else {\r
+ slcExecution.currentStep().addLog(event.getMessage().toString());\r