annotate src/luan/modules/logging/LuanLogger.java @ 1578:c922446f53aa

immutable threading
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 08 Feb 2021 14:16:19 -0700
parents 8fbcc4747091
children f48db13ae2d9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
376
0a75ed73bccc partly revert rev 538c19ad1272 (logging)
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
1 package luan.modules.logging;
0a75ed73bccc partly revert rev 538c19ad1272 (logging)
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
2
1402
27efb1fcbcb5 move luan.lib to goodjava
Franklin Schmidt <fschmidt@gmail.com>
parents: 1393
diff changeset
3 import goodjava.logging.Logger;
27efb1fcbcb5 move luan.lib to goodjava
Franklin Schmidt <fschmidt@gmail.com>
parents: 1393
diff changeset
4 import goodjava.logging.LoggerFactory;
1454
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
5 import goodjava.logger.LoggingFactory;
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
6 import goodjava.logger.GoodLoggerFactory;
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
7 import goodjava.logger.Appender;
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
8 import goodjava.logger.ThreadLocalAppender;
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
9 import goodjava.logger.SimpleConfigurer;
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
10 import goodjava.logger.Level;
1333
25746915a241 merge Luan and LuanState
Franklin Schmidt <fschmidt@gmail.com>
parents: 1332
diff changeset
11 import luan.Luan;
376
0a75ed73bccc partly revert rev 538c19ad1272 (logging)
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
12 import luan.LuanException;
0a75ed73bccc partly revert rev 538c19ad1272 (logging)
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
13
0a75ed73bccc partly revert rev 538c19ad1272 (logging)
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
14
0a75ed73bccc partly revert rev 538c19ad1272 (logging)
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
15 public final class LuanLogger {
0a75ed73bccc partly revert rev 538c19ad1272 (logging)
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
16 private final Logger logger;
0a75ed73bccc partly revert rev 538c19ad1272 (logging)
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
17
1454
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
18 public LuanLogger(String name) {
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
19 this.logger = LoggerFactory.getLogger(name);
376
0a75ed73bccc partly revert rev 538c19ad1272 (logging)
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
20 }
0a75ed73bccc partly revert rev 538c19ad1272 (logging)
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
21
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1454
diff changeset
22 public void error(Luan luan,Object obj) throws LuanException {
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1454
diff changeset
23 logger.error( luan.luanToString(obj) );
376
0a75ed73bccc partly revert rev 538c19ad1272 (logging)
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
24 }
0a75ed73bccc partly revert rev 538c19ad1272 (logging)
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
25
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1454
diff changeset
26 public void warn(Luan luan,Object obj) throws LuanException {
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1454
diff changeset
27 logger.warn( luan.luanToString(obj) );
376
0a75ed73bccc partly revert rev 538c19ad1272 (logging)
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
28 }
0a75ed73bccc partly revert rev 538c19ad1272 (logging)
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
29
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1454
diff changeset
30 public void info(Luan luan,Object obj) throws LuanException {
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1454
diff changeset
31 logger.info( luan.luanToString(obj) );
376
0a75ed73bccc partly revert rev 538c19ad1272 (logging)
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
32 }
0a75ed73bccc partly revert rev 538c19ad1272 (logging)
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
33
1563
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1454
diff changeset
34 public void debug(Luan luan,Object obj) throws LuanException {
8fbcc4747091 remove LuanFunction.luan
Franklin Schmidt <fschmidt@gmail.com>
parents: 1454
diff changeset
35 logger.debug( luan.luanToString(obj) );
376
0a75ed73bccc partly revert rev 538c19ad1272 (logging)
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
36 }
0a75ed73bccc partly revert rev 538c19ad1272 (logging)
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
37
1321
307e76ccd0d6 generalize separate logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
38
1454
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
39 private static final String KEY = "Logger.Appender";
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
40 private static volatile Appender globalAppender = GoodLoggerFactory.DEFAULT_APPENDER;
1321
307e76ccd0d6 generalize separate logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
41
1454
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
42 public static synchronized void initThreadLogging() {
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
43 if( !(globalAppender instanceof ThreadLocalAppender) ) {
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
44 if( !(LoggerFactory.implementation instanceof LoggingFactory) )
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
45 throw new RuntimeException("must use goodjava.logger for thread logging");
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
46 globalAppender = new ThreadLocalAppender(globalAppender);
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
47 configure();
1332
11b7e11f9ed5 cleaner logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1321
diff changeset
48 }
1393
cc0dbca576dc better logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
49 }
cc0dbca576dc better logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1392
diff changeset
50
1454
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
51 public static void startThreadLogging(Luan luan) {
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
52 if( !(globalAppender instanceof ThreadLocalAppender) )
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
53 return;
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
54 ThreadLocalAppender tla = (ThreadLocalAppender)globalAppender;
1578
c922446f53aa immutable threading
Franklin Schmidt <fschmidt@gmail.com>
parents: 1563
diff changeset
55 Appender appender;
c922446f53aa immutable threading
Franklin Schmidt <fschmidt@gmail.com>
parents: 1563
diff changeset
56 synchronized(luan) {
c922446f53aa immutable threading
Franklin Schmidt <fschmidt@gmail.com>
parents: 1563
diff changeset
57 appender = (Appender)luan.registry().get(KEY);
c922446f53aa immutable threading
Franklin Schmidt <fschmidt@gmail.com>
parents: 1563
diff changeset
58 }
1454
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
59 if( appender == null )
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
60 appender = tla.defaultAppender;
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
61 tla.threadLocal.set(appender);
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
62 }
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
63
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
64 public static void endThreadLogging() {
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
65 if( !(globalAppender instanceof ThreadLocalAppender) )
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
66 return;
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
67 ThreadLocalAppender tla = (ThreadLocalAppender)globalAppender;
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
68 tla.threadLocal.remove();
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
69 }
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
70
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
71 public static boolean isConfigured() {
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
72 if( !(LoggerFactory.implementation instanceof LoggingFactory) )
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
73 return true;
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
74 return GoodLoggerFactory.getConfigurer() != GoodLoggerFactory.DEFAULT_CONFIGURER;
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
75 }
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
76
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
77 public static void configure(Luan luan,Appender appender) {
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
78 if( globalAppender instanceof ThreadLocalAppender ) {
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
79 ThreadLocalAppender tla = (ThreadLocalAppender)globalAppender;
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
80 if( tla.threadLocal.get() != null ) {
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
81 luan.registry().put(KEY,appender);
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
82 tla.threadLocal.set(appender);
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
83 } else {
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
84 tla.defaultAppender = appender;
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
85 }
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
86 } else {
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
87 globalAppender = appender;
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
88 configure();
1332
11b7e11f9ed5 cleaner logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1321
diff changeset
89 }
1321
307e76ccd0d6 generalize separate logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
90 }
307e76ccd0d6 generalize separate logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 775
diff changeset
91
1454
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
92 private static void configure() {
219f2b937f2b remove log4j
Franklin Schmidt <fschmidt@gmail.com>
parents: 1402
diff changeset
93 GoodLoggerFactory.setConfigurer( new SimpleConfigurer(Level.INFO,globalAppender) );
1392
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1337
diff changeset
94 }
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1337
diff changeset
95
376
0a75ed73bccc partly revert rev 538c19ad1272 (logging)
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
96 }