KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > mmbase > util > logging > log4j > MMPatternParser


1 /*
2 This software is OSI Certified Open Source Software.
3 OSI Certified is a certification mark of the Open Source Initiative.
4
5 The license (Mozilla version 1.0) can be read at the MMBase site.
6 See http://www.MMBase.org/license
7
8 */

9
10 package org.mmbase.util.logging.log4j;
11
12 import org.mmbase.util.logging.Logging;
13 import org.apache.log4j.helpers.FormattingInfo;
14 import org.apache.log4j.helpers.PatternConverter;
15 import org.apache.log4j.helpers.PatternParser;
16 import org.apache.log4j.spi.LoggingEvent;
17
18 /**
19  * Adds several conversion patterns to the ones supported natively by log4j.
20  * See <a HREF="http://logging.apache.org/log4j/docs/api/org/apache/log4j/PatternLayout.html">log4j pattern layout</a>
21  <table>
22  <tr><th>Conversion Pattern</th><th>Effect</th></tr>
23  <tr><td>%q</td><td>A truncated level (from the _end_, not from the beginning as log4j's %p itself would do) . To 3 chars.</td></tr>
24  <tr><td>%k</td><td>Currently memory in use (in kb).</td></tr>
25  <tr><td>%N</td><td>Machine Name of current MMBase (or 'localhost' if not set).</td></tr>
26  </table>
27  * @author Michiel Meeuwissen
28  * @since MMBase-1.6
29  * @version $Id: MMPatternParser.java,v 1.9 2006/01/03 10:49:35 michiel Exp $
30  */

31 public class MMPatternParser extends PatternParser {
32
33
34     public MMPatternParser(String JavaDoc pattern) {
35         super(pattern);
36     }
37     
38     public void finalizeConverter(char c) {
39         if (c == 'q') {
40             addConverter(new TruncatedLevelPatternConverter(formattingInfo));
41             currentLiteral.setLength(0);
42         } else if (c == 'k') {
43             addConverter(new MemoryPatternConverter(formattingInfo));
44             currentLiteral.setLength(0);
45         } else if (c == 'N') {
46             addConverter(new MachineNamePatternConverter(formattingInfo));
47             currentLiteral.setLength(0);
48         } else {
49             super.finalizeConverter(c);
50         }
51     }
52     
53     private static class TruncatedLevelPatternConverter extends PatternConverter {
54         TruncatedLevelPatternConverter(FormattingInfo formattingInfo) {
55             super(formattingInfo);
56         }
57         
58         public String JavaDoc convert(LoggingEvent event) {
59             return event.getLevel().toString().substring(0, 3);
60         }
61     }
62     
63     private static class MemoryPatternConverter extends PatternConverter {
64         MemoryPatternConverter(FormattingInfo formattingInfo) {
65             super(formattingInfo);
66         }
67         
68         public String JavaDoc convert(LoggingEvent event) {
69             Runtime JavaDoc rt = Runtime.getRuntime();
70             return "" + (rt.totalMemory() - rt.freeMemory()) / 1024;
71         }
72     }
73     /**
74      * @since MMBase-1.8
75      */

76     private static class MachineNamePatternConverter extends PatternConverter {
77         MachineNamePatternConverter(FormattingInfo formattingInfo) {
78             super(formattingInfo);
79         }
80         
81         public String JavaDoc convert(LoggingEvent event) {
82             return "" + Logging.getMachineName();
83         }
84     }
85 }
86
Popular Tags