Package org.teiid.logging

Source Code of org.teiid.logging.Log4jListener

/*
* JBoss, Home of Professional Open Source.
* See the COPYRIGHT.txt file distributed with this work for information
* regarding copyright ownership.  Some portions may be licensed
* to Red Hat, Inc. under one or more contributor license agreements.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*/

package org.teiid.logging;

import org.apache.log4j.Level;
import org.apache.log4j.Logger;


/**
* Log4J Listener
*/
public class Log4jListener implements org.teiid.logging.Logger {
 
  @Override
  public boolean isEnabled(String context, int level) {
      if ( context == null ) {
            return false;
        }
      Level logLevel = convert2Log4JLevel(level);
        if ( logLevel == Level.OFF) {
            return false;
        }
        Logger log = getLogger(context);
        return log.isEnabledFor(logLevel);
  }

  @Override
  public void log(int level, String context, Object msg) {
    Logger log4j = getLogger(context);
    log4j.log(convert2Log4JLevel(level), msg);
  }

  public void log(int level, String context, Throwable t, Object msg) {
    Logger log4j = getLogger(context);
    log4j.log(convert2Log4JLevel(level), msg, t);
  }
 
  /**
   * Convert {@link MessageLevel} to {@link Level}
   * @param level
   * @return
   */
    public static Level convert2Log4JLevel(int level) {
      switch (level) {
      case MessageLevel.CRITICAL:
        return Level.FATAL;
      case MessageLevel.ERROR:
        return Level.ERROR;
      case MessageLevel.WARNING:
        return Level.WARN;
      case MessageLevel.INFO:
        return Level.INFO;
      case MessageLevel.DETAIL:
        return Level.DEBUG;
      case MessageLevel.TRACE:
        return Level.TRACE;
      case MessageLevel.NONE:
        return Level.OFF;
      }
      return Level.DEBUG;
    }   
   
  /**
   * Convert  {@link Level} to {@link MessageLevel}
   * @param level
   * @return
   */
    public static int convert2MessageLevel(Level level) {
      switch (level.toInt()) {
      case Level.FATAL_INT:
        return MessageLevel.CRITICAL;
      case Level.ERROR_INT:
        return MessageLevel.ERROR;
      case Level.WARN_INT:
        return MessageLevel.WARNING;
      case Level.INFO_INT:
        return MessageLevel.INFO;
      case Level.DEBUG_INT:
        return MessageLevel.DETAIL;
      case Level.OFF_INT:
        return MessageLevel.NONE;
      }
      return MessageLevel.DETAIL;
    }     
   
    /**
     * Get the logger for the given context.
     * @param context
     * @return
     */
  public static Logger getLogger(String context) {
    return Logger.getLogger(context);
 
         
  @Override
  public void shutdown() {
  }

}
TOP

Related Classes of org.teiid.logging.Log4jListener

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.