diff src/luan/host/Init.luan @ 1199:3995cbe5b00a

simplify logging
author Franklin Schmidt <fschmidt@gmail.com>
date Wed, 28 Feb 2018 23:21:03 -0700
parents 94cf2576a922
children 22228c12b6dd
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