annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1101
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
1 local Luan = require "luan:Luan.luan"
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
2 local error = Luan.error
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
3 local pairs = Luan.pairs or error()
321
7f7708e8fdd4 remove import statement
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 320
diff changeset
4 java()
7f7708e8fdd4 remove import statement
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 320
diff changeset
5 local Logger = require "java:org.apache.log4j.Logger"
7f7708e8fdd4 remove import statement
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 320
diff changeset
6 local EnhancedPatternLayout = require "java:org.apache.log4j.EnhancedPatternLayout"
7f7708e8fdd4 remove import statement
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 320
diff changeset
7 local ConsoleAppender = require "java:org.apache.log4j.ConsoleAppender"
7f7708e8fdd4 remove import statement
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 320
diff changeset
8 local Level = require "java:org.apache.log4j.Level"
7f7708e8fdd4 remove import statement
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 320
diff changeset
9 local RollingFileAppender = require "java:org.apache.log4j.RollingFileAppender"
376
0a75ed73bccc partly revert rev 538c19ad1272 (logging)
Franklin Schmidt <fschmidt@gmail.com>
parents: 374
diff changeset
10 local LuanLogger = require "java:luan.modules.logging.LuanLogger"
205
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
11
1101
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
12
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
13 local Logging = {}
205
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
14
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
15 Logging.layout = "%d %-5p %c - %m%n"
205
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
16
1101
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
17 Logging.appenders = {
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
18 ["System.err"] = "INFO"
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
19 }
205
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
20
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
21 Logging.max_file_size = nil -- by default is "10MB"
205
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
22
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
23
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
24 Logging.log4j_root_logger = Logger.getRootLogger()
205
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
25
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
26 local function to_level(level)
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
27 return level and Level.toLevel(level)
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
28 end
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
29
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
30 function Logging.log_to_file(file,logger_name) -- logger_name is optional, defaults to root logger
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
31 local appender = RollingFileAppender.new(Logging.ptn_layout, file)
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
32 appender.setMaxFileSize(Logging.max_file_size)
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
33 local logger = logger_name and Logger.getLogger(logger_name) or Logging.log4j_root_logger
207
5aafb5b9f70f various
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 205
diff changeset
34 logger.addAppender(appender)
205
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
35 return appender
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
36 end
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
37
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
38 function Logging.init()
1101
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
39 Logging.ptn_layout = EnhancedPatternLayout.new(Logging.layout)
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
40 Logging.log4j_root_logger.removeAllAppenders()
1101
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
41
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
42 local root_level = Level.FATAL
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
43 for _, level in pairs(Logging.appenders) do
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
44 level = to_level(level)
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
45 if not level.isGreaterOrEqual(root_level) then
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
46 root_level = level
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
47 end
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
48 end
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
49 Logging.log4j_root_logger.setLevel(root_level)
205
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
50
1101
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
51 for name, level in pairs(Logging.appenders) do
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
52 level = to_level(level)
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
53 local appender
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
54 if name == "System.err" or name == "System.out" then
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
55 appender = ConsoleAppender.new(Logging.ptn_layout,name)
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
56 Logging.log4j_root_logger.addAppender(appender)
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
57 else
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
58 appender = Logging.log_to_file(name)
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
59 end
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
60 if level ~= root_level then
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
61 appender.setThreshold(level)
14ffce5bb894 make logging more flexible
Franklin Schmidt <fschmidt@gmail.com>
parents: 1088
diff changeset
62 end
205
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
63 end
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
64 end
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
65
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
66
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
67 local function to_luan_logger(log4j_logger)
374
538c19ad1272 simplify logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 321
diff changeset
68 local tbl = {}
538c19ad1272 simplify logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 321
diff changeset
69
376
0a75ed73bccc partly revert rev 538c19ad1272 (logging)
Franklin Schmidt <fschmidt@gmail.com>
parents: 374
diff changeset
70 local luanLogger = LuanLogger.new(log4j_logger)
0a75ed73bccc partly revert rev 538c19ad1272 (logging)
Franklin Schmidt <fschmidt@gmail.com>
parents: 374
diff changeset
71 tbl.error = luanLogger.error
0a75ed73bccc partly revert rev 538c19ad1272 (logging)
Franklin Schmidt <fschmidt@gmail.com>
parents: 374
diff changeset
72 tbl.warn = luanLogger.warn
0a75ed73bccc partly revert rev 538c19ad1272 (logging)
Franklin Schmidt <fschmidt@gmail.com>
parents: 374
diff changeset
73 tbl.info = luanLogger.info
0a75ed73bccc partly revert rev 538c19ad1272 (logging)
Franklin Schmidt <fschmidt@gmail.com>
parents: 374
diff changeset
74 tbl.debug = luanLogger.debug
205
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
75
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
76 function tbl.get_level()
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
77 local level = log4j_logger.getLevel()
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
78 return level and level.toString()
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
79 end
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
80
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
81 function tbl.get_effective_level()
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
82 local level = log4j_logger.getEffectiveLevel()
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
83 return level and level.toString()
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
84 end
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
85
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
86 function tbl.set_level(level)
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
87 log4j_logger.setLevel( to_level(level) )
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
88 end
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
89
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
90 return tbl
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
91 end
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
92
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
93 function Logging.logger(name)
205
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
94 return to_luan_logger( Logger.getLogger(name) )
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
95 end
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
96
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
97 function Logging.root_logger()
205
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
98 return to_luan_logger( Logger.getRootLogger() )
3918f92de5fe add logging component
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
99 end
503
92c3d22745b8 make _ENV optional
Franklin Schmidt <fschmidt@gmail.com>
parents: 376
diff changeset
100
1088
bae2d0c2576c change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
101 return Logging