Mercurial Hosting > nabble
diff src/nabble/view/web/template/NamlLogger.java @ 0:7ecd1a4ef557
add content
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 21 Mar 2019 19:15:52 -0600 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/nabble/view/web/template/NamlLogger.java Thu Mar 21 19:15:52 2019 -0600 @@ -0,0 +1,45 @@ +package nabble.view.web.template; + +import java.util.Map; +import java.util.HashMap; +import nabble.model.Init; +import nabble.model.Site; + + +final class NamlLogger { + // log size varies between NAML_LOG_SIZE and 2*NAML_LOG_SIZE + private static final int NAML_LOG_SIZE = Init.get("NAML_LOG_SIZE",1000000); + + private String old = ""; + private final StringBuilder buf = new StringBuilder(); + + private NamlLogger() {} + + synchronized void log(String msg) { + buf.append(msg).append("\r\n"); + if( buf.length() >= NAML_LOG_SIZE ) { + old = buf.toString(); + buf.setLength(0); + } + } + + synchronized String getLog() { + return old + buf; + } + + private static final Map<Long,NamlLogger> loggers = new HashMap<Long,NamlLogger>(); + + static synchronized NamlLogger getLogger(Site site) { + Long id = site.getId(); + NamlLogger logger = loggers.get(id); + if( logger == null ) { + logger = new NamlLogger(); + loggers.put(id,logger); + } + return logger; + } + + static synchronized void removeLogger(Site site) { + loggers.remove(site.getId()); + } +}