/* Copyright (C) 2003 Vladimir Roubtsov. All rights reserved. * * This program and the accompanying materials are made available under * the terms of the Common Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/cpl-v10.html * * $Id: AppLoggers.java,v 1.1.2.1 2004/07/16 23:32:03 vlad_r Exp $ */ package com.vladium.emma; import java.util.HashSet; import java.util.Set; import java.util.StringTokenizer; import com.vladium.logging.ILogLevels; import com.vladium.logging.Logger; import com.vladium.util.IProperties; import com.vladium.util.Strings; // ---------------------------------------------------------------------------- /** * @author Vlad Roubtsov, (C) 2004 */ public abstract class AppLoggers { // public: ................................................................ public static final String PREFIX_VERBOSITY = "verbosity."; public static final String PROPERTY_VERBOSITY_LEVEL = PREFIX_VERBOSITY + "level"; public static final String DEFAULT_VERBOSITY_LEVEL = ILogLevels.INFO_STRING; public static final String PROPERTY_VERBOSITY_FILTER = PREFIX_VERBOSITY + "filter"; public static Logger create (final String appName, final IProperties properties, final Logger base) { if (properties == null) throw new IllegalArgumentException ("null input: properties"); // verbosity level: final int level; { final String _level = properties.getProperty (PROPERTY_VERBOSITY_LEVEL, DEFAULT_VERBOSITY_LEVEL); level = Logger.stringToLevel (_level); } // verbosity filter: final Set filter; { final String _filter = properties.getProperty (PROPERTY_VERBOSITY_FILTER); Set temp = null; if (_filter != null) { final StringTokenizer tokenizer = new StringTokenizer (_filter, COMMA_DELIMITERS); if (tokenizer.countTokens () > 0) { temp = new HashSet (tokenizer.countTokens ()); while (tokenizer.hasMoreTokens ()) { temp.add (tokenizer.nextToken ()); } } } filter = temp; } return Logger.create (level, null, appName, filter, base); } // protected: ............................................................. // package: ............................................................... // private: ............................................................... private AppLoggers () {} // this class is not extendible private static final String COMMA_DELIMITERS = "," + Strings.WHITE_SPACE; } // end of class // ----------------------------------------------------------------------------