• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* Copyright (C) 2003 Vladimir Roubtsov. All rights reserved.
2  *
3  * This program and the accompanying materials are made available under
4  * the terms of the Common Public License v1.0 which accompanies this distribution,
5  * and is available at http://www.eclipse.org/legal/cpl-v10.html
6  *
7  * $Id: AppLoggers.java,v 1.1.2.1 2004/07/16 23:32:03 vlad_r Exp $
8  */
9 package com.vladium.emma;
10 
11 import java.util.HashSet;
12 import java.util.Set;
13 import java.util.StringTokenizer;
14 
15 import com.vladium.logging.ILogLevels;
16 import com.vladium.logging.Logger;
17 import com.vladium.util.IProperties;
18 import com.vladium.util.Strings;
19 
20 // ----------------------------------------------------------------------------
21 /**
22  * @author Vlad Roubtsov, (C) 2004
23  */
24 public
25 abstract class AppLoggers
26 {
27     // public: ................................................................
28 
29     public static final String PREFIX_VERBOSITY                 = "verbosity.";
30 
31     public static final String PROPERTY_VERBOSITY_LEVEL         = PREFIX_VERBOSITY + "level";
32     public static final String DEFAULT_VERBOSITY_LEVEL          = ILogLevels.INFO_STRING;
33 
34     public static final String PROPERTY_VERBOSITY_FILTER        = PREFIX_VERBOSITY + "filter";
35 
create(final String appName, final IProperties properties, final Logger base)36     public static Logger create (final String appName, final IProperties properties, final Logger base)
37     {
38         if (properties == null)
39             throw new IllegalArgumentException ("null input: properties");
40 
41         // verbosity level:
42 
43         final int level;
44         {
45             final String _level = properties.getProperty (PROPERTY_VERBOSITY_LEVEL,
46                                                           DEFAULT_VERBOSITY_LEVEL);
47             level = Logger.stringToLevel (_level);
48         }
49 
50         // verbosity filter:
51 
52         final Set filter;
53         {
54             final String _filter = properties.getProperty (PROPERTY_VERBOSITY_FILTER);
55             Set temp = null;
56 
57             if (_filter != null)
58             {
59                 final StringTokenizer tokenizer = new StringTokenizer (_filter, COMMA_DELIMITERS);
60                 if (tokenizer.countTokens () > 0)
61                 {
62                     temp = new HashSet (tokenizer.countTokens ());
63                     while (tokenizer.hasMoreTokens ())
64                     {
65                         temp.add (tokenizer.nextToken ());
66                     }
67                 }
68             }
69 
70             filter = temp;
71         }
72 
73         return Logger.create (level, null, appName, filter, base);
74     }
75 
76 
77 
78     // protected: .............................................................
79 
80     // package: ...............................................................
81 
82     // private: ...............................................................
83 
84 
AppLoggers()85     private AppLoggers () {} // this class is not extendible
86 
87     private static final String COMMA_DELIMITERS    = "," + Strings.WHITE_SPACE;
88 
89 } // end of class
90 // ----------------------------------------------------------------------------