Mercurial Hosting > luan
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 |
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 | 68 local tbl = {} |
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 | 100 |
1088
bae2d0c2576c
change module naming convention
Franklin Schmidt <fschmidt@gmail.com>
parents:
775
diff
changeset
|
101 return Logging |