comparison src/luan/modules/logging/Logging.luan @ 1101:14ffce5bb894

make logging more flexible
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 02 Jun 2017 16:42:15 -0600
parents bae2d0c2576c
children 3995cbe5b00a
comparison
equal deleted inserted replaced
1100:ad6b3b9fef40 1101:14ffce5bb894
1 local Luan = require "luan:Luan.luan"
2 local error = Luan.error
3 local pairs = Luan.pairs or error()
1 java() 4 java()
2 local Logger = require "java:org.apache.log4j.Logger" 5 local Logger = require "java:org.apache.log4j.Logger"
3 local EnhancedPatternLayout = require "java:org.apache.log4j.EnhancedPatternLayout" 6 local EnhancedPatternLayout = require "java:org.apache.log4j.EnhancedPatternLayout"
4 local ConsoleAppender = require "java:org.apache.log4j.ConsoleAppender" 7 local ConsoleAppender = require "java:org.apache.log4j.ConsoleAppender"
5 local Level = require "java:org.apache.log4j.Level" 8 local Level = require "java:org.apache.log4j.Level"
6 local RollingFileAppender = require "java:org.apache.log4j.RollingFileAppender" 9 local RollingFileAppender = require "java:org.apache.log4j.RollingFileAppender"
7 local LuanLogger = require "java:luan.modules.logging.LuanLogger" 10 local LuanLogger = require "java:luan.modules.logging.LuanLogger"
8 11
12
9 local Logging = {} 13 local Logging = {}
10 14
11 Logging.layout = "%d %-5p %c - %m%n" 15 Logging.layout = "%d %-5p %c - %m%n"
12 16
13 Logging.level = "INFO" 17 Logging.appenders = {
14 18 ["System.err"] = "INFO"
15 Logging.console = "System.err" -- or "System.out" or set to nil for no console 19 }
16
17 Logging.file = nil -- set to file name if you want logging to a file
18 20
19 Logging.max_file_size = nil -- by default is "10MB" 21 Logging.max_file_size = nil -- by default is "10MB"
20 22
21 23
22 Logging.log4j_root_logger = Logger.getRootLogger() 24 Logging.log4j_root_logger = Logger.getRootLogger()
32 logger.addAppender(appender) 34 logger.addAppender(appender)
33 return appender 35 return appender
34 end 36 end
35 37
36 function Logging.init() 38 function Logging.init()
39 Logging.ptn_layout = EnhancedPatternLayout.new(Logging.layout)
37 Logging.log4j_root_logger.removeAllAppenders() 40 Logging.log4j_root_logger.removeAllAppenders()
38 Logging.log4j_root_logger.setLevel( to_level(Logging.level) )
39 Logging.ptn_layout = EnhancedPatternLayout.new(Logging.layout)
40 41
41 if Logging.console ~= nil then 42 local root_level = Level.FATAL
42 Logging.console_appender = ConsoleAppender.new(Logging.ptn_layout,Logging.console) 43 for _, level in pairs(Logging.appenders) do
43 Logging.log4j_root_logger.addAppender(Logging.console_appender) 44 level = to_level(level)
44 else 45 if not level.isGreaterOrEqual(root_level) then
45 Logging.console_appender = nil 46 root_level = level
47 end
46 end 48 end
49 Logging.log4j_root_logger.setLevel(root_level)
47 50
48 if Logging.file ~= nil then 51 for name, level in pairs(Logging.appenders) do
49 Logging.file_appender = Logging.log_to_file(Logging.file) 52 level = to_level(level)
50 else 53 local appender
51 Logging.file_appender = nil 54 if name == "System.err" or name == "System.out" then
55 appender = ConsoleAppender.new(Logging.ptn_layout,name)
56 Logging.log4j_root_logger.addAppender(appender)
57 else
58 appender = Logging.log_to_file(name)
59 end
60 if level ~= root_level then
61 appender.setThreshold(level)
62 end
52 end 63 end
53 end 64 end
54 65
55 66
56 local function to_luan_logger(log4j_logger) 67 local function to_luan_logger(log4j_logger)