comparison 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
comparison
equal deleted inserted replaced
774:3e30cf310e56 775:1a68fc55a80c
1 java()
2 local Logger = require "java:org.apache.log4j.Logger"
3 local EnhancedPatternLayout = require "java:org.apache.log4j.EnhancedPatternLayout"
4 local ConsoleAppender = require "java:org.apache.log4j.ConsoleAppender"
5 local Level = require "java:org.apache.log4j.Level"
6 local RollingFileAppender = require "java:org.apache.log4j.RollingFileAppender"
7 local LuanLogger = require "java:luan.modules.logging.LuanLogger"
8
9 local M = {}
10
11 M.layout = "%d %-5p %c - %m%n"
12
13 M.level = "INFO"
14
15 M.console = "System.err" -- or "System.out" or set to nil for no console
16
17 M.file = nil -- set to file name if you want logging to a file
18
19 M.max_file_size = nil -- by default is "10MB"
20
21
22 M.log4j_root_logger = Logger.getRootLogger()
23
24 local function to_level(level)
25 return level and Level.toLevel(level)
26 end
27
28 function M.log_to_file(file,logger_name) -- logger_name is optional, defaults to root logger
29 local appender = RollingFileAppender.new(M.ptn_layout, file)
30 appender.setMaxFileSize(M.max_file_size)
31 local logger = logger_name and Logger.getLogger(logger_name) or M.log4j_root_logger
32 logger.addAppender(appender)
33 return appender
34 end
35
36 function M.init()
37 M.log4j_root_logger.removeAllAppenders()
38 M.log4j_root_logger.setLevel( to_level(M.level) )
39 M.ptn_layout = EnhancedPatternLayout.new(M.layout)
40
41 if M.console ~= nil then
42 M.console_appender = ConsoleAppender.new(M.ptn_layout,M.console)
43 M.log4j_root_logger.addAppender(M.console_appender)
44 else
45 M.console_appender = nil
46 end
47
48 if M.file ~= nil then
49 M.file_appender = M.log_to_file(M.file)
50 else
51 M.file_appender = nil
52 end
53 end
54
55
56 local function to_luan_logger(log4j_logger)
57 local tbl = {}
58
59 local luanLogger = LuanLogger.new(log4j_logger)
60 tbl.error = luanLogger.error
61 tbl.warn = luanLogger.warn
62 tbl.info = luanLogger.info
63 tbl.debug = luanLogger.debug
64
65 function tbl.get_level()
66 local level = log4j_logger.getLevel()
67 return level and level.toString()
68 end
69
70 function tbl.get_effective_level()
71 local level = log4j_logger.getEffectiveLevel()
72 return level and level.toString()
73 end
74
75 function tbl.set_level(level)
76 log4j_logger.setLevel( to_level(level) )
77 end
78
79 return tbl
80 end
81
82 function M.logger(name)
83 return to_luan_logger( Logger.getLogger(name) )
84 end
85
86 function M.root_logger()
87 return to_luan_logger( Logger.getRootLogger() )
88 end
89
90 return M