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 */
9package com.vladium.emma;
10
11import java.util.HashSet;
12import java.util.Set;
13import java.util.StringTokenizer;
14
15import com.vladium.logging.ILogLevels;
16import com.vladium.logging.Logger;
17import com.vladium.util.IProperties;
18import com.vladium.util.Strings;
19
20// ----------------------------------------------------------------------------
21/**
22 * @author Vlad Roubtsov, (C) 2004
23 */
24public
25abstract 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
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
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// ----------------------------------------------------------------------------