/** * Logback: the reliable, generic, fast and flexible logging framework. * Copyright (C) 1999-2013, QOS.ch. All rights reserved. * * This program and the accompanying materials are dual-licensed under * either the terms of the Eclipse Public License v1.0 as published by * the Eclipse Foundation * * or (per the licensee's choosing) * * under the terms of the GNU Lesser General Public License version 2.1 * as published by the Free Software Foundation. */ package ch.qos.logback.classic; import ch.qos.logback.classic.Level; /** * @author ceki */ public class HLoggerContext { private HLogger root; private int size; public HLoggerContext() { this.root = new HLogger("root", null); this.root.setLevel(Level.DEBUG); size = 1; } /** * Return this contexts root logger * * @return */ public HLogger getRootLogger() { return root; } public HLogger getLogger(final String name) { int i = 0; HLogger HLogger = root; HLogger childHLogger = null; String childName; while (true) { int h = name.indexOf('.', i); if (h == -1) { childName = name.substring(i); } else { childName = name.substring(i, h); } // move i left of the last point i = h + 1; synchronized (HLogger) { childHLogger = HLogger.getChildBySuffix(childName); if (childHLogger == null) { childHLogger = HLogger.createChildByLastNamePart(childName); incSize(); } } HLogger = childHLogger; if (h == -1) { return childHLogger; } } } private synchronized void incSize() { size++; } int size() { return size; } /** * Check if the named logger exists in the hierarchy. If so return * its reference, otherwise returns <code>null</code>. * * @param name the name of the logger to search for. */ HLogger exists(String name) { int i = 0; HLogger HLogger = root; HLogger childHLogger = null; String childName; while (true) { int h = name.indexOf('.', i); if (h == -1) { childName = name.substring(i); } else { childName = name.substring(i, h); } // move i left of the last point i = h + 1; synchronized (HLogger) { childHLogger = HLogger.getChildBySuffix(childName); if (childHLogger == null) { return null; } } HLogger = childHLogger; if (h == -1) { if (childHLogger.getName().equals(name)) { return childHLogger; } else { return null; } } } } }