All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.fixprotocol.orchestra.event.log4j2.Log4jEventLogger Maven / Gradle / Ivy

The newest version!
package io.fixprotocol.orchestra.event.log4j2;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import io.fixprotocol.orchestra.event.Event;
import io.fixprotocol.orchestra.event.EventListener;

/**
 * Serializes events using log4j2
 *
 * @author Don Mendelson
 *
 */
public class Log4jEventLogger implements EventListener {

  private volatile boolean isOpen = true;
  private Logger logger;

  /**
   * Uses a Logger qualified by this class name
   */
  public Log4jEventLogger() {
    logger = LogManager.getLogger(Log4jEventLogger.class);
  }

  /**
   * Uses a supplied Logger
   *
   * @param logger a log4j2 Logger
   */
  public Log4jEventLogger(Logger logger) {
    this.logger = logger;
  }

  @Override
  public void close() throws Exception {
    isOpen = false;
  }

  @Override
  public void event(Event event) {
    if (isOpen) {
      switch (event.getSeverity()) {
        case INFO:
          logger.info(event.getMessage());
          break;
        case ERROR:
          logger.error(event.getMessage());
          break;
        case FATAL:
          logger.fatal(event.getMessage());
          break;
        case WARN:
          logger.warn(event.getMessage());
          break;
      }
    }
  }
  
  /**
   * Overrides default selection of Logger
   * 
   * @param resource an instance of Logger
   * @throws IllegalArgumentException if resource is of a different class
   */
  public void setResource(Object resource) {
    if (resource instanceof Logger) {
      this.logger = (Logger) resource;
    } else {
      throw new IllegalArgumentException("No implementation for resource class");
    }
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy