Package org.apache.hadoop.gateway.i18n.messages.loggers.log4j

Source Code of org.apache.hadoop.gateway.i18n.messages.loggers.log4j.Log4jMessageLogger

/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you 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 org.apache.hadoop.gateway.i18n.messages.loggers.log4j;

import org.apache.hadoop.gateway.i18n.messages.MessageLevel;
import org.apache.hadoop.gateway.i18n.messages.MessageLogger;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.spi.LocationInfo;
import org.apache.log4j.spi.LoggingEvent;
import org.apache.log4j.spi.ThrowableInformation;

public class Log4jMessageLogger implements MessageLogger {

  private static String CLASS_NAME = Log4jMessageLogger.class.getName();

  private Logger logger;

  Log4jMessageLogger( Logger logger ) {
    this.logger = logger;
  }

  @Override
  public final boolean isLoggable( final MessageLevel level ) {
    return logger.isEnabledFor( toLevel( level ) );
  }

  @Override
  public final void log( final StackTraceElement caller, final MessageLevel messageLevel, final String messageId, final String messageText, final Throwable thrown ) {
    LoggingEvent event = new LoggingEvent(
        /* String fqnOfCategoryClass */ CLASS_NAME,
        /* Category logger */ logger,
        /* long timeStamp */ System.currentTimeMillis(),
        /* Level level */ toLevel( messageLevel ),
        /* Object message */ messageText,
        /* String threadName */ Thread.currentThread().getName(),
        /* ThrowableInformation throwable */ toThrownInformation( thrown ),
        /* String ndc */ null,
        /* LocationInfo info */ toLocationInfo( caller ),
        /* java.util.Map properties */ null );
    logger.callAppenders( event );
  }

  private static final ThrowableInformation toThrownInformation( final Throwable thrown ) {
    ThrowableInformation info = null;
    if( thrown != null ) {
      info = new ThrowableInformation( thrown );
    }
    return info;
  }

  private static final LocationInfo toLocationInfo( final StackTraceElement caller ) {
    LocationInfo info = null;
    if( caller != null ) {
        info = new LocationInfo( caller.getFileName(), caller.getClassName(), caller.getMethodName(), Integer.toString(caller.getLineNumber()) );
    }
    return info;
  }

  private static final Level toLevel( final MessageLevel level ) {
    switch( level ) {
      case FATAL: return Level.FATAL;
      case ERROR: return Level.ERROR;
      case WARN: return Level.WARN;
      case INFO: return Level.INFO;
      case DEBUG: return Level.DEBUG;
      case TRACE: return Level.TRACE;
      default: return Level.OFF;
    }
  }

}
TOP

Related Classes of org.apache.hadoop.gateway.i18n.messages.loggers.log4j.Log4jMessageLogger

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.