1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.log4j.or;
19
20 import org.apache.log4j.Layout;
21
22
23 /***
24 Render {@link ThreadGroup} objects in a format similar to the
25 information output by the {@link ThreadGroup#list} method.
26 @author Ceki Gülcü
27 @since 1.0 */
28 public class ThreadGroupRenderer implements ObjectRenderer {
29
30 public
31 ThreadGroupRenderer() {
32 }
33
34 /***
35 Render a {@link ThreadGroup} object similar to the way that the
36 {@link ThreadGroup#list} method output information.
37
38 <p>The output of a simple program consisting of one
39 <code>main</code> thread is:
40 <pre>
41 java.lang.ThreadGroup[name=main, maxpri=10]
42 Thread=[main,5,false]
43 </pre>
44
45 <p>The boolean value in thread information is the value returned
46 by {@link Thread#isDaemon}.
47
48 */
49 public
50 String doRender(Object o) {
51 if(o instanceof ThreadGroup) {
52 StringBuffer sbuf = new StringBuffer();
53 ThreadGroup tg = (ThreadGroup) o;
54 sbuf.append("java.lang.ThreadGroup[name=");
55 sbuf.append(tg.getName());
56 sbuf.append(", maxpri=");
57 sbuf.append(tg.getMaxPriority());
58 sbuf.append("]");
59 Thread[] t = new Thread[tg.activeCount()];
60 tg.enumerate(t);
61 for(int i = 0; i < t.length; i++) {
62 sbuf.append(Layout.LINE_SEP);
63 sbuf.append(" Thread=[");
64 sbuf.append(t[i].getName());
65 sbuf.append(",");
66 sbuf.append(t[i].getPriority());
67 sbuf.append(",");
68 sbuf.append(t[i].isDaemon());
69 sbuf.append("]");
70 }
71 return sbuf.toString();
72 } else {
73
74 return o.toString();
75 }
76 }
77 }