diff src/luan/host/run.luan @ 1641:48c24eedb8b2

host cleanup
author Franklin Schmidt <fschmidt@gmail.com>
date Tue, 21 Dec 2021 17:21:37 -0700
parents 59731f7c24ce
children 0a46dbd36208
line wrap: on
line diff
--- a/src/luan/host/run.luan	Tue Dec 21 16:54:26 2021 -0700
+++ b/src/luan/host/run.luan	Tue Dec 21 17:21:37 2021 -0700
@@ -1,13 +1,52 @@
 require "java"
 local Luan = require "luan:Luan.luan"
 local error = Luan.error
+local ipairs = Luan.ipairs or error()
 local do_file = Luan.do_file or error()
-local ipairs = Luan.ipairs or error()
+local Number = require "luan:Number.luan"
+local long = Number.long or error()
 local Io = require "luan:Io.luan"
 local Hosted = require "luan:host/Hosted.luan"
+local WebHandler = require "java:luan.host.WebHandler"
 local Logging = require "luan:logging/Logging.luan"
+
+local log_to_console = false
+for _, arg in ipairs{...} do
+	if arg == "console" then
+		log_to_console = true
+	end
+end
+if not log_to_console then
+	local LuanLogger = require "java:luan.modules.logging.LuanLogger"
+	local Layouts = require "java:goodjava.logger.Layouts"
+	local DateLayout = require "java:goodjava.logger.DateLayout"
+	local ListLayout = require "java:goodjava.logger.ListLayout"
+	local Level = require "java:goodjava.logger.Level"
+	local RollingFileAppender = require "java:goodjava.logger.RollingFileAppender"
+	local LevelAppender = require "java:goodjava.logger.LevelAppender"
+	local ListAppender = require "java:goodjava.logger.ListAppender"
+
+	local one_mb = long(1024*1024)
+	local layout = ListLayout.new(DateLayout.new("yyyy-MM-dd HH:mm:ss,SSS")," ",Layouts.LEVEL_PADDED," ",Layouts.LOGGER," - ",Layouts.MESSAGE,"\n",Layouts.THROWABLE)
+
+	local function new_appender(file,level)
+		local appender = RollingFileAppender.new(layout, file)
+		appender.maxFileSize = one_mb
+		appender = LevelAppender.new(appender,level)
+		return appender
+	end
+
+	local err = new_appender("logs/luan_error.log",Level.ERROR)
+	local warn = new_appender("logs/luan_warn.log",Level.WARN)
+	local info = new_appender("logs/luan_info.log",Level.INFO)
+	local appender = ListAppender.new(err,warn,info)
+	LuanLogger.configure(appender)
+end
+
 local logger = Logging.logger "run"
-local WebHandler = require "java:luan.host.WebHandler"
+
+
+WebHandler.config = require "classpath:luan/host/Config.luan"
 Hosted.WebHandler = WebHandler