view src/luan/modules/logging/Logging.luan @ 1321:307e76ccd0d6

generalize separate logging
author Franklin Schmidt <fschmidt@gmail.com>
date Tue, 05 Feb 2019 22:36:55 -0700
parents 3995cbe5b00a
children 11b7e11f9ed5
line wrap: on
line source

local Luan = require "luan:Luan.luan"
local error = Luan.error
java()
local EnhancedPatternLayout = require "java:org.apache.log4j.EnhancedPatternLayout"
local ConsoleAppender = require "java:org.apache.log4j.ConsoleAppender"
local Level = require "java:org.apache.log4j.Level"
local LuanLogger = require "java:luan.modules.logging.LuanLogger"


local Logging = {}

function Logging.init_root()
	local root = LuanLogger.getRootLogger()
	local has_appenders = root.getAllAppenders().hasMoreElements()
	if not has_appenders then
		root.setLevel(Level.INFO)
		local layout = EnhancedPatternLayout.new("%d %-5p %c - %m%n")
		local appender = ConsoleAppender.new(layout,"System.err");
		root.addAppender(appender);
	end
end
Logging.init_root()

local function to_luan_logger(log4j_logger)
	local tbl = {}

	local luanLogger = LuanLogger.new(log4j_logger)
	tbl.error = luanLogger.error
	tbl.warn = luanLogger.warn
	tbl.info = luanLogger.info
	tbl.debug = luanLogger.debug

	function tbl.get_level()
		local level = log4j_logger.getLevel()
		return level and level.toString()
	end

	function tbl.get_effective_level()
		local level = log4j_logger.getEffectiveLevel()
		return level and level.toString()
	end

	function tbl.set_level(level)
		log4j_logger.setLevel( Level.toLevel(level) )
	end

	return tbl
end

function Logging.logger(name)
	return to_luan_logger( LuanLogger.getLogger(name) )
end

function Logging.root_logger()
	return to_luan_logger( LuanLogger.getRootLogger() )
end

return Logging