Mercurial Hosting > luan
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