view src/luan/modules/logging/LuanLogger.java @ 1336:7483108154bb

minor logging
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 14 Feb 2019 05:22:22 -0700
parents c88b486a9511
children 8b61c8c4e07a
line wrap: on
line source

package luan.modules.logging;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import luan.Luan;
import luan.LuanException;


public final class LuanLogger {
	private final Logger logger;

	public LuanLogger(Luan luan,String name) {
		this.logger = getLogger(luan,name);
	}

	public void error(Object obj) throws LuanException {
		logger.error( Luan.luanToString(obj) );
	}

	public void warn(Object obj) throws LuanException {
		logger.warn( Luan.luanToString(obj) );
	}

	public void info(Object obj) throws LuanException {
		logger.info( Luan.luanToString(obj) );
	}

	public void debug(Object obj) throws LuanException {
		logger.debug( Luan.luanToString(obj) );
	}


	private static ThreadLocal<Luan> tl = new ThreadLocal<Luan>();

	public static Logger getLogger(Luan luan,String name) {
		try {
			luan.require("luan:logging/Logging.luan");  // ensure initialization
		} catch(LuanException e) {
			throw new RuntimeException(e);
		}
		tl.set(luan);
		try {
			return LoggerFactory.getLogger(name);
		} finally {
			tl.remove();
		}
	}

	public static Luan luan() {
		return tl.get();
	}
}