diff src/luan/modules/logging/Logging.luan @ 775:1a68fc55a80c

simplify dir structure
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 26 Aug 2016 14:36:40 -0600
parents logging/src/luan/modules/logging/Logging.luan@9bf9ad733827
children bae2d0c2576c
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/luan/modules/logging/Logging.luan	Fri Aug 26 14:36:40 2016 -0600
@@ -0,0 +1,90 @@
+java()
+local Logger = require "java:org.apache.log4j.Logger"
+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 RollingFileAppender = require "java:org.apache.log4j.RollingFileAppender"
+local LuanLogger = require "java:luan.modules.logging.LuanLogger"
+
+local M = {}
+
+M.layout = "%d %-5p %c - %m%n"
+
+M.level = "INFO"
+
+M.console = "System.err"  -- or "System.out" or set to nil for no console
+
+M.file = nil  -- set to file name if you want logging to a file
+
+M.max_file_size = nil  -- by default is "10MB"
+
+
+M.log4j_root_logger = Logger.getRootLogger()
+
+local function to_level(level)
+	return level and Level.toLevel(level)
+end
+
+function M.log_to_file(file,logger_name)  -- logger_name is optional, defaults to root logger
+	local appender = RollingFileAppender.new(M.ptn_layout, file)
+	appender.setMaxFileSize(M.max_file_size)
+	local logger = logger_name and Logger.getLogger(logger_name) or M.log4j_root_logger
+	logger.addAppender(appender)
+	return appender
+end
+
+function M.init()
+	M.log4j_root_logger.removeAllAppenders()
+	M.log4j_root_logger.setLevel( to_level(M.level) )
+	M.ptn_layout = EnhancedPatternLayout.new(M.layout)
+
+	if M.console ~= nil then
+		M.console_appender = ConsoleAppender.new(M.ptn_layout,M.console)
+		M.log4j_root_logger.addAppender(M.console_appender)
+	else
+		M.console_appender = nil
+	end
+
+	if M.file ~= nil then
+		M.file_appender = M.log_to_file(M.file)
+	else
+		M.file_appender = nil
+	end
+end
+
+
+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( to_level(level) )
+	end
+
+	return tbl
+end
+
+function M.logger(name)
+	return to_luan_logger( Logger.getLogger(name) )
+end
+
+function M.root_logger()
+	return to_luan_logger( Logger.getRootLogger() )
+end
+
+return M