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

org.nutz.log.impl.CustomLogAdapter Maven / Gradle / Ivy

The newest version!
package org.nutz.log.impl;

import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.nutz.log.Log;
import org.nutz.log.LogAdapter;
import org.nutz.log.Logs;
import org.nutz.plugin.Plugin;

public class CustomLogAdapter implements LogAdapter, Plugin {
	@Override
	public Log getLogger(String className) {
		return new Log4J2Logger(className);
	}

	static class Log4J2Logger extends AbstractLog {

		private Logger logger;

		public Log4J2Logger(String className) {
			logger = LogManager.getLogger(className);
			isFatalEnabled = logger.isFatalEnabled();
			isErrorEnabled = logger.isErrorEnabled();
			isWarnEnabled = logger.isWarnEnabled();
			isInfoEnabled = logger.isInfoEnabled();
			isDebugEnabled = logger.isDebugEnabled();
			isTraceEnabled = logger.isTraceEnabled();
		}

		@Override
		protected void log(int level, Object message, Throwable tx) {
			switch (level) {
			case LEVEL_FATAL:
				logger.log(Level.FATAL, message, tx);
				break;
			case LEVEL_ERROR:
				logger.log(Level.ERROR, message, tx);
				break;
			case LEVEL_WARN:
				logger.log(Level.WARN, message, tx);
				break;
			case LEVEL_INFO:
				logger.log(Level.INFO, message, tx);
				break;
			case LEVEL_DEBUG:
				logger.log(Level.DEBUG, message, tx);
				break;
			case LEVEL_TRACE:
				logger.log(Level.TRACE, message, tx);
				break;
			default:
				break;
			}
		}

		@Override
		public void fatal(Object message, Throwable t) {
			log(LEVEL_FATAL, message, t);
		}

		@Override
		public void error(Object message, Throwable t) {
			log(LEVEL_ERROR, message, t);
		}

		@Override
		public void warn(Object message, Throwable t) {
			log(LEVEL_WARN, message, t);
		}

		@Override
		public void info(Object message, Throwable t) {
			log(LEVEL_INFO, message, t);
		}

		@Override
		public void debug(Object message, Throwable t) {
			log(LEVEL_DEBUG, message, t);
		}

		@Override
		public void trace(Object message, Throwable t) {
			log(LEVEL_TRACE, message, t);
		}

	}

	@Override
	public boolean canWork() {
		try {
			Logger.class.getName();
			return true;
		} catch (Exception e) {
			Logs.get().debug(e);
		}
		return false;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy