Package com.google.gwt.logging.impl

Source Code of com.google.gwt.logging.impl.LoggerImplRegular

/*
* Copyright 2010 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/

package com.google.gwt.logging.impl;

import java.util.ArrayList;
import java.util.List;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.LogRecord;
import java.util.logging.Logger;

/**
* Implementation for the Logger class when logging is enabled.
*/
public class LoggerImplRegular implements LoggerImpl {
  private List<Handler> handlers;
  private Level level = null;
  private String name;
  private Logger parent;  // Should never be null except in the RootLogger
  private boolean useParentHandlers;
 
  public LoggerImplRegular() {
    this.useParentHandlers = true;
    handlers = new ArrayList<Handler>();
  }
 
  public void addHandler(Handler handler) {
    handlers.add(handler);
  }
 
  public void config(String msg) {
    log(Level.CONFIG, msg);
  }
 
  public void fine(String msg) {
    log(Level.FINE, msg);
  }

  public void finer(String msg) {
    log(Level.FINER, msg);
  }
  
  public void finest(String msg) {
    log(Level.FINEST, msg);
  }
 
  public Handler[] getHandlers() {
    if (handlers.size() > 0) {
      return (Handler[]) handlers.toArray();
    }
    return null;
  }
 
  public Level getLevel() {
    if (level != null) {
      return level;
    }
    return getParent().getLevel();
  }
 
  public Logger getLoggerHelper(String name) {
    // Ideally, we'd just return LogManager.getLogManager.getOrAddLogger(name)
    // here, since the code is basically the same, except that code gets to call
    // addLoggerWithoutDuplicationChecking, which makes it somewhat more
    // efficient. However, that means adding a public method to LogManager which
    // is not in the API which is frowned upon.
    LogManager manager = LogManager.getLogManager();
    Logger logger = manager.getLogger(name);
    if (logger == null) {
      Logger newLogger = new LoggerWithExposedConstructor(name);
      manager.addLogger(newLogger);
      return newLogger;
    }
    return logger;
  }
 
  public String getName() {
    return name;
  }
 
  public Logger getParent() {
    return parent;
  }
 
  public boolean getUseParentHandlers() {
    return useParentHandlers;
  }
 
  public void info(String msg) {
    log(Level.INFO, msg);
  }
 
  public boolean isLoggable(Level messageLevel) {
    return getLevel().intValue() <= messageLevel.intValue();
  }
 
  public void log(Level level, String msg) {
    log(level, msg, null);
  }
 
  public void log(Level level, String msg, Throwable thrown) {
    if (isLoggable(level)) {
      LogRecord record = new LogRecord(level, msg);
      record.setThrown(thrown);
      record.setLoggerName(getName());
      log(record);
    }
  }
 
  public void log(LogRecord record) {
    if (isLoggable(record.getLevel())) {
      for (Handler h : handlers) {
        h.publish(record);
      }
      if (useParentHandlers && parent != null) {
        parent.log(record);
      }
    }
  }

  public void removeHandler(Handler handler) {
    handlers.remove(handler);
  }
 
  public void setLevel(Level newLevel) {
    level = newLevel;
  }
 
  public void setName(String newName) {
    name = newName;
  }
 
  public void setParent(Logger newParent) {
    if (newParent != null) {
      parent = newParent;
    }
  }
 
  public void setUseParentHandlers(boolean newUseParentHandlers) {
    useParentHandlers = newUseParentHandlers;
  }
 
  public void severe(String msg) {
    log(Level.SEVERE, msg);
  }
 
  public void warning(String msg) {
    log(Level.WARNING, msg);
  }

}
TOP

Related Classes of com.google.gwt.logging.impl.LoggerImplRegular

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.