]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.support.simple/src/main/java/org/argeo/slc/log4j/SlcExecutionAppender.java
Add log4j support
[gpl/argeo-slc.git] / runtime / org.argeo.slc.support.simple / src / main / java / org / argeo / slc / log4j / SlcExecutionAppender.java
1 package org.argeo.slc.log4j;
2
3 import org.apache.log4j.AppenderSkeleton;
4 import org.apache.log4j.Layout;
5 import org.apache.log4j.Logger;
6 import org.apache.log4j.PatternLayout;
7 import org.apache.log4j.spi.LoggingEvent;
8 import org.argeo.slc.core.execution.ExecutionThread;
9 import org.argeo.slc.process.SlcExecutionStep;
10 import org.springframework.beans.factory.DisposableBean;
11 import org.springframework.beans.factory.InitializingBean;
12
13 /** Not meant to be used directly in standard log4j config */
14 public class SlcExecutionAppender extends AppenderSkeleton implements
15 InitializingBean, DisposableBean {
16
17 private Layout layout = null;
18 private String pattern = "%m - %c%n";
19
20 public void afterPropertiesSet() {
21 if (layout != null)
22 setLayout(layout);
23 else
24 setLayout(new PatternLayout(pattern));
25 Logger.getRootLogger().addAppender(this);
26 }
27
28 @Override
29 protected void append(LoggingEvent event) {
30 if (!(Thread.currentThread() instanceof ExecutionThread))
31 return;
32
33 ExecutionThread executionThread = (ExecutionThread) Thread
34 .currentThread();
35 executionThread.dispatchAddStep(new SlcExecutionStep(layout
36 .format(event)));
37 }
38
39 public void destroy() throws Exception {
40 Logger.getRootLogger().removeAppender(this);
41 }
42
43 public void close() {
44 }
45
46 public boolean requiresLayout() {
47 return false;
48 }
49
50 public void setLayout(Layout layout) {
51 this.layout = layout;
52 }
53
54 public void setPattern(String pattern) {
55 this.pattern = pattern;
56 }
57
58 }