changeset 1199:3995cbe5b00a

simplify logging
author Franklin Schmidt <fschmidt@gmail.com>
date Wed, 28 Feb 2018 23:21:03 -0700
parents 9d3835e88204
children 1e351b0d385e
files src/luan/host/Init.luan src/luan/modules/logging/Logging.luan
diffstat 2 files changed, 33 insertions(+), 84 deletions(-) [+]
line wrap: on
line diff
--- a/src/luan/host/Init.luan	Tue Feb 27 21:28:24 2018 -0700
+++ b/src/luan/host/Init.luan	Wed Feb 28 23:21:03 2018 -0700
@@ -28,44 +28,34 @@
 
 java()
 local Logger = require "java:org.apache.log4j.Logger"
-local Logging = require "luan:logging/Logging.luan"
+local Level = require "java:org.apache.log4j.Level"
+local EnhancedPatternLayout = require "java:org.apache.log4j.EnhancedPatternLayout"
+local RollingFileAppender = require "java:org.apache.log4j.RollingFileAppender"
 
 local root = gsub(domain,"\.",":")
 
-Logging.layout = "%d %-5p %c{-1} - %m%n"
-Logging.file = dir.."/site/private/local/logs/luan.log"
-Logging.max_file_size = "1MB"
-local one_mb = 1048576
-
-local log_dir = dir.."/site/private/local/logs/"
-Logging.appenders = {
-	[log_dir.."error.log"] = "ERROR"
-	[log_dir.."warn.log"] = "WARN"
-	[log_dir.."info.log"] = "INFO"
-}
+local logger = Logger.getLogger(root)
+local has_appenders = logger.getAllAppenders().hasMoreElements()
+if not has_appenders then
+	logger.setAdditivity(false)
+	local layout = EnhancedPatternLayout.new("%d %-5p %c{-1} - %m%n")
+	local log_dir = dir.."/site/private/local/logs/"
 
-Logging.log4j_root_logger = Logger.getLogger(root)
-Logging.log4j_root_logger.setAdditivity(false)
-
-local old_log_to_file = Logging.log_to_file
+	local function add_appender(file,level)
+		local appender = RollingFileAppender.new(layout, log_dir..file)
+		appender.setMaxFileSize("1MB")
+		logger.addAppender(appender)
+		if level ~= logger.getEffectiveLevel() then
+			appender.setThreshold(level)
+		end
+	end
 
-function Logging.log_to_file(file,logger_name)
-	Io.schemes.file(file)  -- security check
-	logger_name = logger_name and root .. "." .. logger_name
-	local appender = old_log_to_file(file,logger_name)
-	appender.getMaximumFileSize() <= one_mb or error "Logging.max_file_size is too big"
-	return appender
+	add_appender("error.log",Level.ERROR)
+	add_appender("warn.log",Level.WARN)
+	add_appender("info.log",Level.INFO)
 end
 
-local old_init = Logging.init
-
-function Logging.init()
-	Logging.appenders["System.err"] = nil
-	Logging.appenders["System.out"] = nil
-	old_init()
-end
-
-Logging.init()
+local Logging = require "luan:logging/Logging.luan"
 
 local old_logger = Logging.logger
 
--- a/src/luan/modules/logging/Logging.luan	Tue Feb 27 21:28:24 2018 -0700
+++ b/src/luan/modules/logging/Logging.luan	Wed Feb 28 23:21:03 2018 -0700
@@ -1,69 +1,28 @@
 local Luan = require "luan:Luan.luan"
 local error = Luan.error
-local pairs = Luan.pairs or error()
 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 Logging = {}
 
-Logging.layout = "%d %-5p %c - %m%n"
-
-Logging.appenders = {
-	["System.err"] = "INFO"
-}
-
-Logging.max_file_size = nil  -- by default is "10MB"
-
-
-Logging.log4j_root_logger = Logger.getRootLogger()
-
-local function to_level(level)
-	return level and Level.toLevel(level)
-end
-
-function Logging.log_to_file(file,logger_name)  -- logger_name is optional, defaults to root logger
-	local appender = RollingFileAppender.new(Logging.ptn_layout, file)
-	appender.setMaxFileSize(Logging.max_file_size)
-	local logger = logger_name and Logger.getLogger(logger_name) or Logging.log4j_root_logger
-	logger.addAppender(appender)
-	return appender
+function Logging.init()
+	local root = Logger.getRootLogger()
+	local has_appenders = root.getAllAppenders().hasMoreElements()
+	if has_appenders then
+		return false
+	end
+	root.setLevel(Level.INFO)
+	local layout = EnhancedPatternLayout.new("%d %-5p %c - %m%n")
+	local appender = ConsoleAppender.new(layout,"System.err");
+	root.addAppender(appender);
+	return true
 end
 
-function Logging.init()
-	Logging.ptn_layout = EnhancedPatternLayout.new(Logging.layout)
-	Logging.log4j_root_logger.removeAllAppenders()
-
-	local root_level = Level.FATAL
-	for _, level in pairs(Logging.appenders) do
-		level = to_level(level)
-		if not level.isGreaterOrEqual(root_level) then
-			root_level = level
-		end
-	end
-	Logging.log4j_root_logger.setLevel(root_level)
-
-	for name, level in pairs(Logging.appenders) do
-		level = to_level(level)
-		local appender
-		if name == "System.err" or name == "System.out" then
-			appender = ConsoleAppender.new(Logging.ptn_layout,name)
-			Logging.log4j_root_logger.addAppender(appender)
-		else
-			appender = Logging.log_to_file(name)
-		end
-		if level ~= root_level then
-			appender.setThreshold(level)
-		end
-	end
-end
-
-
 local function to_luan_logger(log4j_logger)
 	local tbl = {}
 
@@ -84,7 +43,7 @@
 	end
 
 	function tbl.set_level(level)
-		log4j_logger.setLevel( to_level(level) )
+		log4j_logger.setLevel( Level.toLevel(level) )
 	end
 
 	return tbl