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