disabling concurrent logging

(maybe temporary)
pull/436/head
Michael Peter Christen 3 years ago
parent 552ab7051b
commit 7898815c41

@ -51,13 +51,14 @@ public final class ConcurrentLog {
private final static Message POISON_MESSAGE = new Message(); private final static Message POISON_MESSAGE = new Message();
private final static BlockingQueue<Message> logQueue = new ArrayBlockingQueue<Message>(500); private final static BlockingQueue<Message> logQueue = new ArrayBlockingQueue<Message>(500);
private static Worker logRunnerThread = null; private static Worker logRunnerThread = null;
public static boolean backgroundRunner = false;
static { static {
ensureWorkerIsRunning(); ensureWorkerIsRunning();
} }
public static void ensureWorkerIsRunning() { public static void ensureWorkerIsRunning() {
if (logRunnerThread == null || !logRunnerThread.isAlive()) { if (backgroundRunner && (logRunnerThread == null || !logRunnerThread.isAlive())) {
logRunnerThread = new Worker(); logRunnerThread = new Worker();
logRunnerThread.start(); logRunnerThread.start();
//ConcurrentLogLogger.log(Level.INFO, "started ConcurrentLog.Worker."); //ConcurrentLogLogger.log(Level.INFO, "started ConcurrentLog.Worker.");
@ -252,20 +253,20 @@ public final class ConcurrentLog {
// private // private
private final static void enQueueLog(final Logger logger, final Level level, final String message, final Throwable thrown) { private final static void enQueueLog(final Logger logger, final Level level, final String message, final Throwable thrown) {
if (!logger.isLoggable(level)) return; if (!logger.isLoggable(level)) return;
if (logRunnerThread == null || !logRunnerThread.isAlive()) { if (!backgroundRunner || logRunnerThread == null || !logRunnerThread.isAlive()) {
if (thrown == null) logger.log(level, "* " + message); else logger.log(level, "* " + message, thrown); // the * is inefficient, but should show up only in emergency cases if (thrown == null) logger.log(level, "* " + message); else logger.log(level, "* " + message, thrown); // the * is inefficient, but should show up only in emergency cases
} else { } else {
try { try {
if (thrown == null) logQueue.put(new Message(logger, level, message)); else logQueue.put(new Message(logger, level, message, thrown)); if (thrown == null) logQueue.put(new Message(logger, level, message)); else logQueue.put(new Message(logger, level, message, thrown));
} catch (final InterruptedException e) { } catch (final InterruptedException e) {
if (thrown == null) logger.log(level, message); else logger.log(level, message, thrown); if (thrown == null) logger.log(level, message); else logger.log(level, message, thrown);
} }
} }
} }
private final static void enQueueLog(final Logger logger, final Level level, final String message) { private final static void enQueueLog(final Logger logger, final Level level, final String message) {
if (!logger.isLoggable(level)) return; if (!logger.isLoggable(level)) return;
if (logRunnerThread == null || !logRunnerThread.isAlive()) { if (!backgroundRunner || logRunnerThread == null || !logRunnerThread.isAlive()) {
logger.log(level, "* " + message); // the * is inefficient, but should show up only in emergency cases logger.log(level, "* " + message); // the * is inefficient, but should show up only in emergency cases
} else { } else {
try { try {
@ -277,19 +278,19 @@ public final class ConcurrentLog {
} }
private final static void enQueueLog(final String loggername, final Level level, final String message, final Throwable thrown) { private final static void enQueueLog(final String loggername, final Level level, final String message, final Throwable thrown) {
if (logRunnerThread == null || !logRunnerThread.isAlive()) { if (!backgroundRunner || logRunnerThread == null || !logRunnerThread.isAlive()) {
if (thrown == null) Logger.getLogger(loggername).log(level, "* " + message); else Logger.getLogger(loggername).log(level, "* " + message, thrown); // the * is inefficient, but should show up only in emergency cases if (thrown == null) Logger.getLogger(loggername).log(level, "* " + message); else Logger.getLogger(loggername).log(level, "* " + message, thrown); // the * is inefficient, but should show up only in emergency cases
} else { } else {
try { try {
if (thrown == null) logQueue.put(new Message(loggername, level, message)); else logQueue.put(new Message(loggername, level, message, thrown)); if (thrown == null) logQueue.put(new Message(loggername, level, message)); else logQueue.put(new Message(loggername, level, message, thrown));
} catch (final InterruptedException e) { } catch (final InterruptedException e) {
if (thrown == null) Logger.getLogger(loggername).log(level, message); else Logger.getLogger(loggername).log(level, message, thrown); if (thrown == null) Logger.getLogger(loggername).log(level, message); else Logger.getLogger(loggername).log(level, message, thrown);
} }
} }
} }
private final static void enQueueLog(final String loggername, final Level level, final String message) { private final static void enQueueLog(final String loggername, final Level level, final String message) {
if (logRunnerThread == null || !logRunnerThread.isAlive()) { if (!backgroundRunner || logRunnerThread == null || !logRunnerThread.isAlive()) {
Logger.getLogger(loggername).log(level, "* " + message); // the * is inefficient, but should show up only in emergency cases Logger.getLogger(loggername).log(level, "* " + message); // the * is inefficient, but should show up only in emergency cases
} else { } else {
try { try {
@ -383,14 +384,14 @@ public final class ConcurrentLog {
System.out.println("STARTUP: Trying to load logging configuration from file " + loggingConfigFile.toString()); System.out.println("STARTUP: Trying to load logging configuration from file " + loggingConfigFile.toString());
try (final FileInputStream fileIn = new FileInputStream(loggingConfigFile);){ try (final FileInputStream fileIn = new FileInputStream(loggingConfigFile);){
final String logFilePatternKey = "java.util.logging.FileHandler.pattern"; final String logFilePatternKey = "java.util.logging.FileHandler.pattern";
final Properties logProperties = new Properties(); final Properties logProperties = new Properties();
logProperties.load(fileIn); logProperties.load(fileIn);
String logFilePattern = logProperties.getProperty(logFilePatternKey, "%h/java%u.log" /* default FileHandler pattern*/); String logFilePattern = logProperties.getProperty(logFilePatternKey, "%h/java%u.log" /* default FileHandler pattern*/);
File logFile; File logFile;
if(logFilePattern.startsWith("%h")) { if(logFilePattern.startsWith("%h")) {
logFile = new File(System.getProperty("user.home") + logFilePattern.substring(2)); logFile = new File(System.getProperty("user.home") + logFilePattern.substring(2));
} else if(logFilePattern.startsWith("%t")) { } else if(logFilePattern.startsWith("%t")) {
String tmpDir = System.getProperty("java.io.tmpdir"); String tmpDir = System.getProperty("java.io.tmpdir");
if (tmpDir == null) { if (tmpDir == null) {
@ -398,17 +399,17 @@ public final class ConcurrentLog {
} }
logFile = new File(tmpDir, logFilePattern.substring(2)); logFile = new File(tmpDir, logFilePattern.substring(2));
} else { } else {
logFile = new File(logFilePattern); logFile = new File(logFilePattern);
if (!logFile.isAbsolute()) { if (!logFile.isAbsolute()) {
logFile = new File(dataPath, logFilePattern); logFile = new File(dataPath, logFilePattern);
logFilePattern = logFile.getAbsolutePath(); logFilePattern = logFile.getAbsolutePath();
/* /*
* Update the file pattern with the absolute path flavor as LogManager and * Update the file pattern with the absolute path flavor as LogManager and
* FileHandler classes do not offer a way to configure the base parent path when * FileHandler classes do not offer a way to configure the base parent path when
* using relative path * using relative path
*/ */
logProperties.setProperty(logFilePatternKey, logFilePattern); logProperties.setProperty(logFilePatternKey, logFilePattern);
} }
} }
@ -416,13 +417,13 @@ public final class ConcurrentLog {
// creating the logging directory if necessary // creating the logging directory if necessary
File logDirectory = logFile.getParentFile(); File logDirectory = logFile.getParentFile();
if(logDirectory != null) { if(logDirectory != null) {
if (!logDirectory.exists()) { if (!logDirectory.exists()) {
if(!logDirectory.mkdirs()) { if(!logDirectory.mkdirs()) {
System.err.println("STARTUP: Could not create the logs directory at " + logDirectory.getAbsolutePath()); System.err.println("STARTUP: Could not create the logs directory at " + logDirectory.getAbsolutePath());
} }
} else if(!logDirectory.isDirectory()) { } else if(!logDirectory.isDirectory()) {
System.err.println("STARTUP: Log file parent path at " + logDirectory.getAbsolutePath() + "is not a directory"); System.err.println("STARTUP: Log file parent path at " + logDirectory.getAbsolutePath() + "is not a directory");
} }
} }
final ByteArrayOutputStream propsStream = new ByteArrayOutputStream(); final ByteArrayOutputStream propsStream = new ByteArrayOutputStream();

@ -52,6 +52,7 @@ import org.eclipse.jetty.server.handler.InetAccessHandler;
import org.eclipse.jetty.server.handler.gzip.GzipHandler; import org.eclipse.jetty.server.handler.gzip.GzipHandler;
import org.eclipse.jetty.servlet.ServletHolder; import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.util.ProcessorUtils; import org.eclipse.jetty.util.ProcessorUtils;
import org.eclipse.jetty.util.log.Log;
import org.eclipse.jetty.util.resource.Resource; import org.eclipse.jetty.util.resource.Resource;
import org.eclipse.jetty.util.ssl.SslContextFactory; import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.eclipse.jetty.webapp.WebAppContext; import org.eclipse.jetty.webapp.WebAppContext;
@ -206,7 +207,8 @@ public class Jetty9HttpServerImpl implements YaCyHttpServer {
context.setContextPath("/"); context.setContextPath("/");
context.setHandler(handlers); context.setHandler(handlers);
context.setMaxFormContentSize(1024 * 1024 * 10); // allow 10MB, large forms may be required during crawl starts with long lists context.setMaxFormContentSize(1024 * 1024 * 10); // allow 10MB, large forms may be required during crawl starts with long lists
org.eclipse.jetty.util.log.Logger log = Log.getRootLogger();
context.setLogger(log);
// make YaCy handlers (in context) and servlet context handlers available (both contain root context "/") // make YaCy handlers (in context) and servlet context handlers available (both contain root context "/")
// logic: 1. YaCy handlers are called if request not handled (e.g. proxy) then servlets handle it // logic: 1. YaCy handlers are called if request not handled (e.g. proxy) then servlets handle it
ContextHandlerCollection allrequesthandlers = new ContextHandlerCollection(); ContextHandlerCollection allrequesthandlers = new ContextHandlerCollection();

Loading…
Cancel
Save