diff --git a/htroot/BlacklistCleaner_p.java b/htroot/BlacklistCleaner_p.java
index 5cfae65ae..0dbea480a 100644
--- a/htroot/BlacklistCleaner_p.java
+++ b/htroot/BlacklistCleaner_p.java
@@ -50,10 +50,10 @@ import de.anomic.data.Blacklist;
import de.anomic.data.DefaultBlacklist;
import de.anomic.data.listManager;
import de.anomic.http.httpRequestHeader;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.server.serverObjects;
import de.anomic.server.serverSwitch;
+import de.anomic.yacy.logging.Log;
public class BlacklistCleaner_p {
diff --git a/htroot/Blacklist_p.java b/htroot/Blacklist_p.java
index 622905bfb..da678dacc 100644
--- a/htroot/Blacklist_p.java
+++ b/htroot/Blacklist_p.java
@@ -43,12 +43,12 @@ import de.anomic.data.AbstractBlacklist;
import de.anomic.data.Blacklist;
import de.anomic.data.listManager;
import de.anomic.http.httpRequestHeader;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.plasmaSearchEvent;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.server.serverObjects;
import de.anomic.server.serverSwitch;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
public class Blacklist_p {
private final static String EDIT = "edit_";
diff --git a/htroot/BlogComments.java b/htroot/BlogComments.java
index 6e71f9dfd..dbe19020b 100644
--- a/htroot/BlogComments.java
+++ b/htroot/BlogComments.java
@@ -41,12 +41,12 @@ import de.anomic.data.messageBoard;
import de.anomic.data.userDB;
import de.anomic.data.blogBoard.BlogEntry;
import de.anomic.http.httpRequestHeader;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.FileUtils;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.server.serverObjects;
import de.anomic.server.serverSwitch;
import de.anomic.yacy.yacyCore;
+import de.anomic.yacy.logging.Log;
public class BlogComments {
diff --git a/htroot/Bookmarks.java b/htroot/Bookmarks.java
index d36afa0e9..9907adecd 100644
--- a/htroot/Bookmarks.java
+++ b/htroot/Bookmarks.java
@@ -43,7 +43,6 @@ import de.anomic.data.bookmarksDB.Tag;
import de.anomic.http.httpRequestHeader;
import de.anomic.kelondro.text.metadataPrototype.URLMetadataRow;
import de.anomic.kelondro.util.DateFormatter;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.plasmaParserDocument;
import de.anomic.plasma.plasmaSnippetCache;
import de.anomic.plasma.plasmaSwitchboard;
@@ -52,6 +51,7 @@ import de.anomic.server.serverSwitch;
import de.anomic.yacy.yacyNewsPool;
import de.anomic.yacy.yacyNewsRecord;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
public class Bookmarks {
diff --git a/htroot/CrawlResults.java b/htroot/CrawlResults.java
index 46c892173..49ce6647b 100644
--- a/htroot/CrawlResults.java
+++ b/htroot/CrawlResults.java
@@ -32,13 +32,13 @@ import java.util.Locale;
import de.anomic.http.httpRequestHeader;
import de.anomic.kelondro.text.metadataPrototype.URLMetadataRow;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.server.serverObjects;
import de.anomic.server.serverSwitch;
import de.anomic.tools.nxTools;
import de.anomic.yacy.yacySeed;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
public class CrawlResults {
diff --git a/htroot/ProxyIndexingMonitor_p.java b/htroot/ProxyIndexingMonitor_p.java
index cba9b4bb4..0b9243f86 100644
--- a/htroot/ProxyIndexingMonitor_p.java
+++ b/htroot/ProxyIndexingMonitor_p.java
@@ -31,12 +31,12 @@ import java.io.File;
import java.io.IOException;
import de.anomic.http.httpRequestHeader;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.plasmaHTCache;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.plasma.plasmaSwitchboardConstants;
import de.anomic.server.serverObjects;
import de.anomic.server.serverSwitch;
+import de.anomic.yacy.logging.Log;
public class ProxyIndexingMonitor_p {
diff --git a/htroot/ViewImage.java b/htroot/ViewImage.java
index 2a3d44923..66b586b8d 100644
--- a/htroot/ViewImage.java
+++ b/htroot/ViewImage.java
@@ -30,13 +30,13 @@ import java.net.MalformedURLException;
import java.util.HashMap;
import de.anomic.http.httpRequestHeader;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.FileUtils;
import de.anomic.plasma.plasmaSnippetCache;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.server.serverObjects;
import de.anomic.server.serverSwitch;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
import de.anomic.ymage.ymageImageParser;
public class ViewImage {
diff --git a/htroot/yacy/crawlReceipt.java b/htroot/yacy/crawlReceipt.java
index 2f125889a..61bd02900 100644
--- a/htroot/yacy/crawlReceipt.java
+++ b/htroot/yacy/crawlReceipt.java
@@ -32,13 +32,13 @@ import java.io.IOException;
import de.anomic.crawler.ZURL;
import de.anomic.http.httpRequestHeader;
import de.anomic.kelondro.text.metadataPrototype.URLMetadataRow;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.server.serverObjects;
import de.anomic.server.serverSwitch;
import de.anomic.tools.crypt;
import de.anomic.yacy.yacyNetwork;
import de.anomic.yacy.yacySeed;
+import de.anomic.yacy.logging.Log;
public final class crawlReceipt {
diff --git a/htroot/yacy/message.java b/htroot/yacy/message.java
index 5d832abf4..71176c12f 100644
--- a/htroot/yacy/message.java
+++ b/htroot/yacy/message.java
@@ -36,7 +36,6 @@ import java.util.Date;
import de.anomic.data.messageBoard;
import de.anomic.http.httpRequestHeader;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.FileUtils;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.server.serverObjects;
@@ -45,6 +44,7 @@ import de.anomic.tools.crypt;
import de.anomic.yacy.yacyCore;
import de.anomic.yacy.yacyNetwork;
import de.anomic.yacy.yacySeed;
+import de.anomic.yacy.logging.Log;
public final class message {
diff --git a/htroot/yacy/transferRWI.java b/htroot/yacy/transferRWI.java
index 30575f56e..8817222f3 100644
--- a/htroot/yacy/transferRWI.java
+++ b/htroot/yacy/transferRWI.java
@@ -37,7 +37,6 @@ import de.anomic.data.Blacklist;
import de.anomic.http.httpRequestHeader;
import de.anomic.kelondro.text.referencePrototype.WordReferenceRow;
import de.anomic.kelondro.util.FileUtils;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.plasma.plasmaSwitchboardConstants;
import de.anomic.server.serverCore;
@@ -48,6 +47,7 @@ import de.anomic.yacy.yacyCore;
import de.anomic.yacy.yacyNetwork;
import de.anomic.yacy.yacySeed;
import de.anomic.yacy.dht.FlatWordPartitionScheme;
+import de.anomic.yacy.logging.Log;
public final class transferRWI {
diff --git a/htroot/yacysearch.java b/htroot/yacysearch.java
index 0fbf119aa..a9d013dc8 100644
--- a/htroot/yacysearch.java
+++ b/htroot/yacysearch.java
@@ -38,7 +38,6 @@ import de.anomic.kelondro.order.Bitfield;
import de.anomic.kelondro.text.metadataPrototype.URLMetadataRow;
import de.anomic.kelondro.util.MemoryControl;
import de.anomic.kelondro.util.SetTools;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.plasmaParserDocument;
import de.anomic.plasma.plasmaProfiling;
import de.anomic.plasma.plasmaSearchEvent;
@@ -61,6 +60,7 @@ import de.anomic.xml.RSSFeed;
import de.anomic.yacy.yacyNewsPool;
import de.anomic.yacy.yacyNewsRecord;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
public class yacysearch {
diff --git a/source/de/anomic/crawler/AbstractImporter.java b/source/de/anomic/crawler/AbstractImporter.java
index fdaeab07a..9f857daa8 100644
--- a/source/de/anomic/crawler/AbstractImporter.java
+++ b/source/de/anomic/crawler/AbstractImporter.java
@@ -1,6 +1,6 @@
package de.anomic.crawler;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public abstract class AbstractImporter extends Thread implements Importer {
diff --git a/source/de/anomic/crawler/Balancer.java b/source/de/anomic/crawler/Balancer.java
index 54fd8f5ca..651abfcd4 100644
--- a/source/de/anomic/crawler/Balancer.java
+++ b/source/de/anomic/crawler/Balancer.java
@@ -37,7 +37,7 @@ import de.anomic.kelondro.index.Row;
import de.anomic.kelondro.index.ObjectIndex;
import de.anomic.kelondro.order.CloneableIterator;
import de.anomic.kelondro.table.EcoTable;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public class Balancer {
diff --git a/source/de/anomic/crawler/CrawlQueues.java b/source/de/anomic/crawler/CrawlQueues.java
index 50ca29d6c..25ec451c1 100644
--- a/source/de/anomic/crawler/CrawlQueues.java
+++ b/source/de/anomic/crawler/CrawlQueues.java
@@ -41,7 +41,6 @@ import de.anomic.http.httpClient;
import de.anomic.kelondro.table.FlexWidthArray;
import de.anomic.kelondro.util.DateFormatter;
import de.anomic.kelondro.util.FileUtils;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.plasmaParser;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.plasma.plasmaSwitchboardConstants;
@@ -52,6 +51,7 @@ import de.anomic.yacy.yacyClient;
import de.anomic.yacy.yacySeed;
import de.anomic.yacy.yacyURL;
import de.anomic.yacy.dht.PeerSelection;
+import de.anomic.yacy.logging.Log;
public class CrawlQueues {
diff --git a/source/de/anomic/crawler/CrawlStacker.java b/source/de/anomic/crawler/CrawlStacker.java
index af163ac38..6b50db1ab 100644
--- a/source/de/anomic/crawler/CrawlStacker.java
+++ b/source/de/anomic/crawler/CrawlStacker.java
@@ -34,12 +34,12 @@ import java.util.Date;
import de.anomic.data.Blacklist;
import de.anomic.kelondro.text.Segment;
import de.anomic.kelondro.text.metadataPrototype.URLMetadataRow;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.server.serverDomains;
import de.anomic.server.serverProcessor;
import de.anomic.yacy.yacySeedDB;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
public final class CrawlStacker {
diff --git a/source/de/anomic/crawler/CrawlSwitchboard.java b/source/de/anomic/crawler/CrawlSwitchboard.java
index dfd938059..cca281cf9 100644
--- a/source/de/anomic/crawler/CrawlSwitchboard.java
+++ b/source/de/anomic/crawler/CrawlSwitchboard.java
@@ -33,9 +33,9 @@ import java.util.Iterator;
import de.anomic.crawler.CrawlProfile.entry;
import de.anomic.kelondro.util.FileUtils;
import de.anomic.kelondro.util.kelondroException;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.parser.Word;
import de.anomic.yacy.yacySeedDB;
+import de.anomic.yacy.logging.Log;
public final class CrawlSwitchboard {
diff --git a/source/de/anomic/crawler/FTPLoader.java b/source/de/anomic/crawler/FTPLoader.java
index 03ff28e76..7fec7dae4 100644
--- a/source/de/anomic/crawler/FTPLoader.java
+++ b/source/de/anomic/crawler/FTPLoader.java
@@ -36,13 +36,13 @@ import de.anomic.http.httpRequestHeader;
import de.anomic.http.httpResponseHeader;
import de.anomic.http.httpdProxyCacheEntry;
import de.anomic.kelondro.util.DateFormatter;
-import de.anomic.kelondro.util.Log;
import de.anomic.net.ftpc;
import de.anomic.plasma.plasmaHTCache;
import de.anomic.plasma.plasmaParser;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.plasma.parser.Document;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
public class FTPLoader {
diff --git a/source/de/anomic/crawler/HTTPLoader.java b/source/de/anomic/crawler/HTTPLoader.java
index 8e66275b3..f46d730a7 100644
--- a/source/de/anomic/crawler/HTTPLoader.java
+++ b/source/de/anomic/crawler/HTTPLoader.java
@@ -34,12 +34,12 @@ import de.anomic.http.httpResponse;
import de.anomic.http.httpRequestHeader;
import de.anomic.http.httpResponseHeader;
import de.anomic.http.httpdProxyCacheEntry;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.plasmaHTCache;
import de.anomic.plasma.plasmaParser;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.plasma.parser.Document;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
public final class HTTPLoader {
diff --git a/source/de/anomic/crawler/ImporterManager.java b/source/de/anomic/crawler/ImporterManager.java
index 2db701c0d..c0a1561eb 100644
--- a/source/de/anomic/crawler/ImporterManager.java
+++ b/source/de/anomic/crawler/ImporterManager.java
@@ -2,7 +2,7 @@ package de.anomic.crawler;
import java.util.Vector;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public class ImporterManager {
diff --git a/source/de/anomic/crawler/IndexingStack.java b/source/de/anomic/crawler/IndexingStack.java
index 1a5b68990..604de3345 100644
--- a/source/de/anomic/crawler/IndexingStack.java
+++ b/source/de/anomic/crawler/IndexingStack.java
@@ -42,12 +42,12 @@ import de.anomic.kelondro.table.Stack;
import de.anomic.kelondro.text.MetadataRepository;
import de.anomic.kelondro.text.metadataPrototype.URLMetadataRow;
import de.anomic.kelondro.util.DateFormatter;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.plasmaHTCache;
import de.anomic.plasma.plasmaSwitchboardConstants;
import de.anomic.yacy.yacySeed;
import de.anomic.yacy.yacySeedDB;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
public class IndexingStack {
diff --git a/source/de/anomic/crawler/NoticedURL.java b/source/de/anomic/crawler/NoticedURL.java
index 52a18d7b4..9e281b7a0 100755
--- a/source/de/anomic/crawler/NoticedURL.java
+++ b/source/de/anomic/crawler/NoticedURL.java
@@ -30,7 +30,7 @@ import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public class NoticedURL {
diff --git a/source/de/anomic/crawler/ProtocolLoader.java b/source/de/anomic/crawler/ProtocolLoader.java
index 37213b575..7412f7b66 100644
--- a/source/de/anomic/crawler/ProtocolLoader.java
+++ b/source/de/anomic/crawler/ProtocolLoader.java
@@ -33,11 +33,11 @@ import java.util.Iterator;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.plasma.parser.Document;
import de.anomic.server.serverCore;
import de.anomic.server.serverProcessorJob;
+import de.anomic.yacy.logging.Log;
public final class ProtocolLoader {
diff --git a/source/de/anomic/crawler/ResourceObserver.java b/source/de/anomic/crawler/ResourceObserver.java
index 334e12f75..5dd2b981a 100644
--- a/source/de/anomic/crawler/ResourceObserver.java
+++ b/source/de/anomic/crawler/ResourceObserver.java
@@ -28,10 +28,10 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.plasma.plasmaSwitchboardConstants;
import de.anomic.tools.diskUsage;
+import de.anomic.yacy.logging.Log;
public final class ResourceObserver {
// Unknown for now
diff --git a/source/de/anomic/crawler/ResultURLs.java b/source/de/anomic/crawler/ResultURLs.java
index 695f65a34..3cfb9893e 100644
--- a/source/de/anomic/crawler/ResultURLs.java
+++ b/source/de/anomic/crawler/ResultURLs.java
@@ -42,9 +42,9 @@ import java.util.List;
import de.anomic.kelondro.order.Bitfield;
import de.anomic.kelondro.text.metadataPrototype.URLMetadataRow;
import de.anomic.kelondro.util.ScoreCluster;
-import de.anomic.kelondro.util.Log;
import de.anomic.yacy.yacySeedDB;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
public final class ResultURLs {
diff --git a/source/de/anomic/crawler/RobotsTxt.java b/source/de/anomic/crawler/RobotsTxt.java
index 341bf6e53..50faa4ded 100644
--- a/source/de/anomic/crawler/RobotsTxt.java
+++ b/source/de/anomic/crawler/RobotsTxt.java
@@ -49,9 +49,9 @@ import de.anomic.kelondro.order.NaturalOrder;
import de.anomic.kelondro.util.ByteBuffer;
import de.anomic.kelondro.util.DateFormatter;
import de.anomic.kelondro.util.kelondroException;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.FileUtils;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
public class RobotsTxt {
diff --git a/source/de/anomic/data/SitemapParser.java b/source/de/anomic/data/SitemapParser.java
index b012547ae..f8b8cd87f 100644
--- a/source/de/anomic/data/SitemapParser.java
+++ b/source/de/anomic/data/SitemapParser.java
@@ -47,9 +47,9 @@ import de.anomic.http.httpRequestHeader;
import de.anomic.http.httpdByteCountInputStream;
import de.anomic.kelondro.text.metadataPrototype.URLMetadataRow;
import de.anomic.kelondro.util.DateFormatter;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
/**
* Class to parse a sitemap file.
diff --git a/source/de/anomic/data/URLFetcherStack.java b/source/de/anomic/data/URLFetcherStack.java
index dc0abf313..9d819719c 100644
--- a/source/de/anomic/data/URLFetcherStack.java
+++ b/source/de/anomic/data/URLFetcherStack.java
@@ -33,8 +33,8 @@ import de.anomic.kelondro.index.Row.EntryIndex;
import de.anomic.kelondro.order.Base64Order;
import de.anomic.kelondro.table.Stack;
import de.anomic.kelondro.util.kelondroException;
-import de.anomic.kelondro.util.Log;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
public class URLFetcherStack {
diff --git a/source/de/anomic/data/blogBoard.java b/source/de/anomic/data/blogBoard.java
index 46095a265..f3e190840 100644
--- a/source/de/anomic/data/blogBoard.java
+++ b/source/de/anomic/data/blogBoard.java
@@ -54,7 +54,7 @@ import de.anomic.kelondro.order.Base64Order;
import de.anomic.kelondro.order.NaturalOrder;
import de.anomic.kelondro.util.DateFormatter;
import de.anomic.kelondro.util.kelondroException;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public class blogBoard {
diff --git a/source/de/anomic/data/blogBoardComments.java b/source/de/anomic/data/blogBoardComments.java
index 911d400d8..1f28b38da 100644
--- a/source/de/anomic/data/blogBoardComments.java
+++ b/source/de/anomic/data/blogBoardComments.java
@@ -51,7 +51,7 @@ import de.anomic.kelondro.blob.BLOBTree;
import de.anomic.kelondro.blob.MapView;
import de.anomic.kelondro.order.Base64Order;
import de.anomic.kelondro.order.NaturalOrder;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public class blogBoardComments {
diff --git a/source/de/anomic/data/bookmarksDB.java b/source/de/anomic/data/bookmarksDB.java
index b7fbf0932..c6a1e5462 100644
--- a/source/de/anomic/data/bookmarksDB.java
+++ b/source/de/anomic/data/bookmarksDB.java
@@ -71,7 +71,6 @@ import de.anomic.kelondro.order.CloneableIterator;
import de.anomic.kelondro.order.NaturalOrder;
import de.anomic.kelondro.util.DateFormatter;
import de.anomic.kelondro.util.kelondroException;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.FileUtils;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.plasma.parser.Word;
@@ -80,6 +79,7 @@ import de.anomic.server.serverInstantBusyThread;
import de.anomic.yacy.yacyNewsPool;
import de.anomic.yacy.yacyNewsRecord;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
public class bookmarksDB {
// ------------------------------------
diff --git a/source/de/anomic/data/translator.java b/source/de/anomic/data/translator.java
index cf460b4b6..b3fe05a7d 100644
--- a/source/de/anomic/data/translator.java
+++ b/source/de/anomic/data/translator.java
@@ -48,9 +48,9 @@ import java.util.Vector;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import de.anomic.kelondro.util.Log;
import de.anomic.server.serverSwitch;
import de.anomic.tools.Formatter;
+import de.anomic.yacy.logging.Log;
/**
* Wordlist based translator
diff --git a/source/de/anomic/http/AcceptEverythingTrustManager.java b/source/de/anomic/http/AcceptEverythingTrustManager.java
index bc04dbc80..6fd24d0cb 100644
--- a/source/de/anomic/http/AcceptEverythingTrustManager.java
+++ b/source/de/anomic/http/AcceptEverythingTrustManager.java
@@ -7,7 +7,7 @@ import java.security.cert.X509Certificate;
import javax.net.ssl.X509TrustManager;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
/**
* trust every server
diff --git a/source/de/anomic/http/HttpConnectionInfo.java b/source/de/anomic/http/HttpConnectionInfo.java
index 251cd5984..6352ea8c6 100644
--- a/source/de/anomic/http/HttpConnectionInfo.java
+++ b/source/de/anomic/http/HttpConnectionInfo.java
@@ -30,7 +30,7 @@ import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
/**
* Information about a connection
diff --git a/source/de/anomic/http/httpClient.java b/source/de/anomic/http/httpClient.java
index ecae456ac..809bd626a 100644
--- a/source/de/anomic/http/httpClient.java
+++ b/source/de/anomic/http/httpClient.java
@@ -64,8 +64,8 @@ import org.apache.commons.httpclient.protocol.ProtocolSocketFactory;
import de.anomic.crawler.Latency;
import de.anomic.kelondro.order.Base64Order;
-import de.anomic.kelondro.util.Log;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
/**
* HttpClient implementation which uses Jakarta Commons HttpClient 3.x {@link http://hc.apache.org/httpclient-3.x/}
diff --git a/source/de/anomic/http/httpResponseHeader.java b/source/de/anomic/http/httpResponseHeader.java
index 133eebb54..21415629f 100755
--- a/source/de/anomic/http/httpResponseHeader.java
+++ b/source/de/anomic/http/httpResponseHeader.java
@@ -30,7 +30,7 @@ import java.util.Date;
import java.util.HashMap;
import java.util.Map;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public class httpResponseHeader extends httpHeader {
diff --git a/source/de/anomic/http/httpTemplate.java b/source/de/anomic/http/httpTemplate.java
index 89226b415..372bfebee 100644
--- a/source/de/anomic/http/httpTemplate.java
+++ b/source/de/anomic/http/httpTemplate.java
@@ -61,8 +61,8 @@ import java.util.HashMap;
import java.util.List;
import de.anomic.kelondro.util.ByteBuffer;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.FileUtils;
+import de.anomic.yacy.logging.Log;
/**
* A template engine, which substitutes patterns in strings
diff --git a/source/de/anomic/http/httpd.java b/source/de/anomic/http/httpd.java
index 6803cd4c2..d8016c7c0 100644
--- a/source/de/anomic/http/httpd.java
+++ b/source/de/anomic/http/httpd.java
@@ -66,7 +66,6 @@ import de.anomic.kelondro.order.Base64Order;
import de.anomic.kelondro.order.Digest;
import de.anomic.kelondro.util.ByteBuffer;
import de.anomic.kelondro.util.DateFormatter;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.FileUtils;
import de.anomic.kelondro.util.MemoryControl;
import de.anomic.plasma.plasmaSwitchboard;
@@ -77,6 +76,7 @@ import de.anomic.server.serverHandler;
import de.anomic.server.serverObjects;
import de.anomic.server.serverSwitch;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
/**
diff --git a/source/de/anomic/http/httpdFileHandler.java b/source/de/anomic/http/httpdFileHandler.java
index ea142efab..58742a45b 100644
--- a/source/de/anomic/http/httpdFileHandler.java
+++ b/source/de/anomic/http/httpdFileHandler.java
@@ -84,7 +84,6 @@ import de.anomic.htmlFilter.htmlFilterContentScraper;
import de.anomic.htmlFilter.htmlFilterInputStream;
import de.anomic.kelondro.util.ByteBuffer;
import de.anomic.kelondro.util.DateFormatter;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.FileUtils;
import de.anomic.kelondro.util.MemoryControl;
import de.anomic.plasma.plasmaParser;
@@ -96,6 +95,7 @@ import de.anomic.server.serverObjects;
import de.anomic.server.serverSwitch;
import de.anomic.server.servletProperties;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
import de.anomic.ymage.ymageMatrix;
public final class httpdFileHandler {
diff --git a/source/de/anomic/http/httpdProxyHandler.java b/source/de/anomic/http/httpdProxyHandler.java
index 1f1b52ca3..77a5ecd45 100644
--- a/source/de/anomic/http/httpdProxyHandler.java
+++ b/source/de/anomic/http/httpdProxyHandler.java
@@ -76,7 +76,6 @@ import de.anomic.data.Blacklist;
import de.anomic.htmlFilter.htmlFilterContentTransformer;
import de.anomic.htmlFilter.htmlFilterTransformer;
import de.anomic.kelondro.util.DateFormatter;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.FileUtils;
import de.anomic.plasma.plasmaHTCache;
import de.anomic.plasma.plasmaParser;
@@ -87,6 +86,7 @@ import de.anomic.server.serverCore;
import de.anomic.server.serverDomains;
import de.anomic.server.serverObjects;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
public final class httpdProxyHandler {
diff --git a/source/de/anomic/icap/icapd.java b/source/de/anomic/icap/icapd.java
index b4ebcfa8f..80c80e309 100644
--- a/source/de/anomic/icap/icapd.java
+++ b/source/de/anomic/icap/icapd.java
@@ -41,7 +41,6 @@ import de.anomic.http.httpRequestHeader;
import de.anomic.http.httpResponseHeader;
import de.anomic.http.httpdProxyCacheEntry;
import de.anomic.kelondro.util.DateFormatter;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.FileUtils;
import de.anomic.plasma.plasmaHTCache;
import de.anomic.plasma.plasmaParser;
@@ -51,6 +50,7 @@ import de.anomic.server.serverCore;
import de.anomic.server.serverHandler;
import de.anomic.server.serverCore.Session;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
/**
* @author theli
diff --git a/source/de/anomic/kelondro/blob/BLOBArray.java b/source/de/anomic/kelondro/blob/BLOBArray.java
index 895b0809c..f1572692a 100755
--- a/source/de/anomic/kelondro/blob/BLOBArray.java
+++ b/source/de/anomic/kelondro/blob/BLOBArray.java
@@ -48,7 +48,7 @@ import de.anomic.kelondro.text.ReferenceFactory;
import de.anomic.kelondro.text.ReferenceContainerCache.blobFileEntries;
import de.anomic.kelondro.util.DateFormatter;
import de.anomic.kelondro.util.FileUtils;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public class BLOBArray implements BLOB {
diff --git a/source/de/anomic/kelondro/blob/BLOBHeapModifier.java b/source/de/anomic/kelondro/blob/BLOBHeapModifier.java
index 57a4105b8..bf83cbc23 100644
--- a/source/de/anomic/kelondro/blob/BLOBHeapModifier.java
+++ b/source/de/anomic/kelondro/blob/BLOBHeapModifier.java
@@ -34,7 +34,7 @@ import de.anomic.kelondro.io.CachedRandomAccess;
import de.anomic.kelondro.order.ByteOrder;
import de.anomic.kelondro.util.FileUtils;
import de.anomic.kelondro.util.MemoryControl;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public class BLOBHeapModifier extends HeapReader implements BLOB {
diff --git a/source/de/anomic/kelondro/blob/HeapReader.java b/source/de/anomic/kelondro/blob/HeapReader.java
index d689f35ca..e91a09b30 100644
--- a/source/de/anomic/kelondro/blob/HeapReader.java
+++ b/source/de/anomic/kelondro/blob/HeapReader.java
@@ -41,7 +41,7 @@ import de.anomic.kelondro.order.CloneableIterator;
import de.anomic.kelondro.order.RotateIterator;
import de.anomic.kelondro.util.FileUtils;
import de.anomic.kelondro.util.MemoryControl;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public class HeapReader {
diff --git a/source/de/anomic/kelondro/blob/HeapWriter.java b/source/de/anomic/kelondro/blob/HeapWriter.java
index d43b15bf0..3567b6d02 100644
--- a/source/de/anomic/kelondro/blob/HeapWriter.java
+++ b/source/de/anomic/kelondro/blob/HeapWriter.java
@@ -34,7 +34,7 @@ import de.anomic.kelondro.index.HandleMap;
import de.anomic.kelondro.order.ByteOrder;
import de.anomic.kelondro.order.Digest;
import de.anomic.kelondro.util.FileUtils;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public final class HeapWriter {
diff --git a/source/de/anomic/kelondro/index/Row.java b/source/de/anomic/kelondro/index/Row.java
index 4374c073c..0f23d866c 100644
--- a/source/de/anomic/kelondro/index/Row.java
+++ b/source/de/anomic/kelondro/index/Row.java
@@ -44,7 +44,7 @@ import de.anomic.kelondro.order.NaturalOrder;
import de.anomic.kelondro.order.Order;
import de.anomic.kelondro.util.ByteBuffer;
import de.anomic.kelondro.util.kelondroException;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public final class Row {
diff --git a/source/de/anomic/kelondro/index/RowCollection.java b/source/de/anomic/kelondro/index/RowCollection.java
index f68199a5c..fcc556cc5 100644
--- a/source/de/anomic/kelondro/index/RowCollection.java
+++ b/source/de/anomic/kelondro/index/RowCollection.java
@@ -43,9 +43,9 @@ import de.anomic.kelondro.order.NaturalOrder;
import de.anomic.kelondro.util.MemoryControl;
import de.anomic.kelondro.util.NamePrefixThreadFactory;
import de.anomic.kelondro.util.kelondroException;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.FileUtils;
import de.anomic.server.serverProcessor;
+import de.anomic.yacy.logging.Log;
public class RowCollection implements Iterable {
diff --git a/source/de/anomic/kelondro/index/RowSet.java b/source/de/anomic/kelondro/index/RowSet.java
index 7eba1e91b..35f51ac53 100644
--- a/source/de/anomic/kelondro/index/RowSet.java
+++ b/source/de/anomic/kelondro/index/RowSet.java
@@ -32,7 +32,7 @@ import java.util.Random;
import de.anomic.kelondro.order.Base64Order;
import de.anomic.kelondro.order.CloneableIterator;
import de.anomic.kelondro.order.NaturalOrder;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public class RowSet extends RowCollection implements ObjectIndex, Iterable {
diff --git a/source/de/anomic/kelondro/order/Base64Order.java b/source/de/anomic/kelondro/order/Base64Order.java
index 8a127baca..4c2751e6b 100644
--- a/source/de/anomic/kelondro/order/Base64Order.java
+++ b/source/de/anomic/kelondro/order/Base64Order.java
@@ -30,7 +30,7 @@ package de.anomic.kelondro.order;
import java.io.UnsupportedEncodingException;
import java.util.Comparator;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public class Base64Order extends AbstractOrder implements ByteOrder, Coding, Comparator, Cloneable {
diff --git a/source/de/anomic/kelondro/order/Digest.java b/source/de/anomic/kelondro/order/Digest.java
index bc9d8a8be..0ef791d75 100644
--- a/source/de/anomic/kelondro/order/Digest.java
+++ b/source/de/anomic/kelondro/order/Digest.java
@@ -44,7 +44,7 @@ import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.LinkedBlockingQueue;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public class Digest {
diff --git a/source/de/anomic/kelondro/table/AbstractRecords.java b/source/de/anomic/kelondro/table/AbstractRecords.java
index 8ec80d14d..3d045a351 100644
--- a/source/de/anomic/kelondro/table/AbstractRecords.java
+++ b/source/de/anomic/kelondro/table/AbstractRecords.java
@@ -51,7 +51,7 @@ import de.anomic.kelondro.order.ByteOrder;
import de.anomic.kelondro.order.NaturalOrder;
import de.anomic.kelondro.util.FileUtils;
import de.anomic.kelondro.util.kelondroException;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public abstract class AbstractRecords implements RandomAccessRecords {
diff --git a/source/de/anomic/kelondro/table/EcoTable.java b/source/de/anomic/kelondro/table/EcoTable.java
index 136a8a3e3..d44218e4e 100644
--- a/source/de/anomic/kelondro/table/EcoTable.java
+++ b/source/de/anomic/kelondro/table/EcoTable.java
@@ -52,7 +52,7 @@ import de.anomic.kelondro.order.NaturalOrder;
import de.anomic.kelondro.util.FileUtils;
import de.anomic.kelondro.util.MemoryControl;
import de.anomic.kelondro.util.kelondroException;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
/*
* The EcoIndex builds upon the EcoFS and tries to reduce the number of IO requests that the
diff --git a/source/de/anomic/kelondro/table/FlexWidthArray.java b/source/de/anomic/kelondro/table/FlexWidthArray.java
index 1f78eed87..7bf363ace 100644
--- a/source/de/anomic/kelondro/table/FlexWidthArray.java
+++ b/source/de/anomic/kelondro/table/FlexWidthArray.java
@@ -38,7 +38,7 @@ import de.anomic.kelondro.index.Row;
import de.anomic.kelondro.order.NaturalOrder;
import de.anomic.kelondro.util.FileUtils;
import de.anomic.kelondro.util.kelondroException;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public class FlexWidthArray implements ObjectArray {
diff --git a/source/de/anomic/kelondro/table/SplitTable.java b/source/de/anomic/kelondro/table/SplitTable.java
index 8bb3078ee..d2e7a31c3 100644
--- a/source/de/anomic/kelondro/table/SplitTable.java
+++ b/source/de/anomic/kelondro/table/SplitTable.java
@@ -61,8 +61,8 @@ import de.anomic.kelondro.order.Order;
import de.anomic.kelondro.order.StackIterator;
import de.anomic.kelondro.util.DateFormatter;
import de.anomic.kelondro.util.FileUtils;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.NamePrefixThreadFactory;
+import de.anomic.yacy.logging.Log;
public class SplitTable implements ObjectIndex {
diff --git a/source/de/anomic/kelondro/table/Stack.java b/source/de/anomic/kelondro/table/Stack.java
index aa0b4a112..441f3c7a6 100644
--- a/source/de/anomic/kelondro/table/Stack.java
+++ b/source/de/anomic/kelondro/table/Stack.java
@@ -37,8 +37,8 @@ import java.util.StringTokenizer;
import de.anomic.kelondro.index.Row;
import de.anomic.kelondro.order.NaturalOrder;
import de.anomic.kelondro.util.FileUtils;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.kelondroException;
+import de.anomic.yacy.logging.Log;
public final class Stack extends FullRecords {
diff --git a/source/de/anomic/kelondro/table/Tree.java b/source/de/anomic/kelondro/table/Tree.java
index e0260e2fa..94293ed6f 100644
--- a/source/de/anomic/kelondro/table/Tree.java
+++ b/source/de/anomic/kelondro/table/Tree.java
@@ -52,7 +52,7 @@ import de.anomic.kelondro.order.CloneableIterator;
import de.anomic.kelondro.order.NaturalOrder;
import de.anomic.kelondro.util.FileUtils;
import de.anomic.kelondro.util.kelondroException;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public class Tree extends CachedRecords implements ObjectIndex {
diff --git a/source/de/anomic/kelondro/text/IODispatcher.java b/source/de/anomic/kelondro/text/IODispatcher.java
index ecc144071..c20dca314 100644
--- a/source/de/anomic/kelondro/text/IODispatcher.java
+++ b/source/de/anomic/kelondro/text/IODispatcher.java
@@ -31,8 +31,8 @@ import java.util.concurrent.Semaphore;
import de.anomic.kelondro.blob.BLOBArray;
import de.anomic.kelondro.index.Row;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.MemoryControl;
+import de.anomic.yacy.logging.Log;
/**
* this is a concurrent merger that can merge single files that are queued for merging.
diff --git a/source/de/anomic/kelondro/text/MetadataRepository.java b/source/de/anomic/kelondro/text/MetadataRepository.java
index 96601a15d..71e8e903f 100644
--- a/source/de/anomic/kelondro/text/MetadataRepository.java
+++ b/source/de/anomic/kelondro/text/MetadataRepository.java
@@ -52,8 +52,8 @@ import de.anomic.kelondro.table.SplitTable;
import de.anomic.kelondro.text.metadataPrototype.URLMetadataRow;
import de.anomic.kelondro.text.referencePrototype.WordReference;
import de.anomic.kelondro.util.ScoreCluster;
-import de.anomic.kelondro.util.Log;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
public final class MetadataRepository implements Iterable {
diff --git a/source/de/anomic/kelondro/text/ReferenceContainerArray.java b/source/de/anomic/kelondro/text/ReferenceContainerArray.java
index 255bbd717..fbfdc4bc7 100644
--- a/source/de/anomic/kelondro/text/ReferenceContainerArray.java
+++ b/source/de/anomic/kelondro/text/ReferenceContainerArray.java
@@ -36,7 +36,7 @@ import de.anomic.kelondro.index.Row;
import de.anomic.kelondro.index.RowSet;
import de.anomic.kelondro.order.ByteOrder;
import de.anomic.kelondro.order.CloneableIterator;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public final class ReferenceContainerArray {
diff --git a/source/de/anomic/kelondro/text/ReferenceContainerCache.java b/source/de/anomic/kelondro/text/ReferenceContainerCache.java
index f77e437d7..f5f23c1b1 100644
--- a/source/de/anomic/kelondro/text/ReferenceContainerCache.java
+++ b/source/de/anomic/kelondro/text/ReferenceContainerCache.java
@@ -42,9 +42,9 @@ import de.anomic.kelondro.order.Base64Order;
import de.anomic.kelondro.order.ByteOrder;
import de.anomic.kelondro.util.ByteArray;
import de.anomic.kelondro.util.FileUtils;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.index.Row;
import de.anomic.kelondro.index.RowSet;
+import de.anomic.yacy.logging.Log;
public final class ReferenceContainerCache extends AbstractIndex implements Index, IndexReader, Iterable> {
diff --git a/source/de/anomic/kelondro/text/Segment.java b/source/de/anomic/kelondro/text/Segment.java
index acfd1ef46..c715ac78e 100644
--- a/source/de/anomic/kelondro/text/Segment.java
+++ b/source/de/anomic/kelondro/text/Segment.java
@@ -46,13 +46,13 @@ import de.anomic.kelondro.text.navigationPrototype.NavigationReferenceRow;
import de.anomic.kelondro.text.referencePrototype.WordReference;
import de.anomic.kelondro.text.referencePrototype.WordReferenceFactory;
import de.anomic.kelondro.text.referencePrototype.WordReferenceRow;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.plasmaParserDocument;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.plasma.parser.Word;
import de.anomic.plasma.parser.Condenser;
import de.anomic.tools.iso639;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
public final class Segment {
diff --git a/source/de/anomic/kelondro/util/FileUtils.java b/source/de/anomic/kelondro/util/FileUtils.java
index 9e4c76269..c8dcb4974 100644
--- a/source/de/anomic/kelondro/util/FileUtils.java
+++ b/source/de/anomic/kelondro/util/FileUtils.java
@@ -58,6 +58,7 @@ import java.util.zip.ZipOutputStream;
import de.anomic.kelondro.index.Row;
import de.anomic.kelondro.index.RowSet;
+import de.anomic.yacy.logging.Log;
public final class FileUtils {
diff --git a/source/de/anomic/kelondro/util/Log.java b/source/de/anomic/kelondro/util/Log.java
deleted file mode 100644
index 24dfb2c7a..000000000
--- a/source/de/anomic/kelondro/util/Log.java
+++ /dev/null
@@ -1,217 +0,0 @@
-// serverLog.java
-// -------------------------------------
-// (C) by Michael Peter Christen; mc@yacy.net
-// first published on http://www.anomic.de
-// Frankfurt, Germany, 2004
-// last major change: $LastChangedDate: 2009-01-30 14:48:11 +0000 (Fr, 30 Jan 2009) $ by $LastChangedBy: orbiter $
-// Revision: $LastChangedRevision: 5539 $
-//
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-package de.anomic.kelondro.util;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.logging.Level;
-import java.util.logging.LogManager;
-import java.util.logging.Logger;
-
-public final class Log {
-
- // log-level categories
- public static final int LOGLEVEL_ZERO = Level.OFF.intValue(); // no output at all
- public static final int LOGLEVEL_SEVERE = Level.SEVERE.intValue(); // system-level error, internal cause, critical and not fixeable (i.e. inconsistency)
- public static final int LOGLEVEL_WARNING = Level.WARNING.intValue(); // uncritical service failure, may require user activity (i.e. input required, wrong authorization)
- public static final int LOGLEVEL_CONFIG = Level.CONFIG.intValue(); // regular system status information (i.e. start-up messages)
- public static final int LOGLEVEL_INFO = Level.INFO.intValue(); // regular action information (i.e. any httpd request URL)
- public static final int LOGLEVEL_FINE = Level.FINE.intValue(); // in-function status debug output
- public static final int LOGLEVEL_FINER = Level.FINER.intValue(); // in-function status debug output
- public static final int LOGLEVEL_FINEST = Level.FINEST.intValue(); // in-function status debug output
-
- // these categories are also present as character tokens
- public static final char LOGTOKEN_ZERO = 'Z';
- public static final char LOGTOKEN_SEVERE = 'E';
- public static final char LOGTOKEN_WARNING = 'W';
- public static final char LOGTOKEN_CONFIG = 'S';
- public static final char LOGTOKEN_INFO = 'I';
- public static final char LOGTOKEN_FINE = 'D';
- public static final char LOGTOKEN_FINER = 'D';
- public static final char LOGTOKEN_FINEST = 'D';
-
- private final Logger theLogger;
-
- public Log(final String appName) {
- this.theLogger = Logger.getLogger(appName);
- //this.theLogger.setLevel(Level.FINEST); // set a default level
- }
-
- public void setLevel(final Level newLevel) {
- this.theLogger.setLevel(newLevel);
- }
-
- public void logSevere(final String message) {this.theLogger.severe(message);}
- public void logSevere(final String message, final Throwable thrown) {this.theLogger.log(Level.SEVERE,message,thrown);}
- public boolean isSevere() { return this.theLogger.isLoggable(Level.SEVERE); }
-
- public void logWarning(final String message) {this.theLogger.warning(message);}
- public void logWarning(final String message, final Throwable thrown) {this.theLogger.log(Level.WARNING,message,thrown);}
- public boolean isWarning() { return this.theLogger.isLoggable(Level.WARNING); }
-
- public void logConfig(final String message) {this.theLogger.config(message);}
- public void logConfig(final String message, final Throwable thrown) {this.theLogger.log(Level.CONFIG,message,thrown);}
- public boolean isConfig() { return this.theLogger.isLoggable(Level.CONFIG); }
-
- public void logInfo(final String message) {this.theLogger.info(message);}
- public void logInfo(final String message, final Throwable thrown) {this.theLogger.log(Level.INFO,message,thrown);}
- public boolean isInfo() { return this.theLogger.isLoggable(Level.INFO); }
-
- public void logFine(final String message) {this.theLogger.fine(message);}
- public void logFine(final String message, final Throwable thrown) {this.theLogger.log(Level.FINE,message,thrown);}
- public boolean isFine() { return this.theLogger.isLoggable(Level.FINE); }
-
- public void logFiner(final String message) {this.theLogger.finer(message);}
- public void logFiner(final String message, final Throwable thrown) {this.theLogger.log(Level.FINER,message,thrown);}
- public boolean isFiner() { return this.theLogger.isLoggable(Level.FINER); }
-
- public void logFinest(final String message) {this.theLogger.finest(message);}
- public void logFinest(final String message, final Throwable thrown) {this.theLogger.log(Level.FINEST,message,thrown);}
- public boolean isFinest() { return this.theLogger.isLoggable(Level.FINEST); }
-
- public boolean isLoggable(final Level level) {
- return this.theLogger.isLoggable(level);
- }
-
-
- // static log messages: log everything
- public static void logSevere(final String appName, final String message) {
- Logger.getLogger(appName).severe(message);
- }
- public static void logSevere(final String appName, final String message, final Throwable thrown) {
- Logger.getLogger(appName).log(Level.SEVERE,message,thrown);
- }
- public static boolean isSevere(final String appName) {
- return Logger.getLogger(appName).isLoggable(Level.SEVERE);
- }
-
- public static void logWarning(final String appName, final String message) {
- Logger.getLogger(appName).warning(message);
- }
- public static void logWarning(final String appName, final String message, final Throwable thrown) {
- Logger.getLogger(appName).log(Level.WARNING,message,thrown);
- }
- public static boolean isWarning(final String appName) {
- return Logger.getLogger(appName).isLoggable(Level.WARNING);
- }
-
- public static void logConfig(final String appName, final String message) {
- Logger.getLogger(appName).config(message);
- }
- public static void logConfig(final String appName, final String message, final Throwable thrown) {
- Logger.getLogger(appName).log(Level.CONFIG,message,thrown);
- }
- public static boolean isConfig(final String appName) {
- return Logger.getLogger(appName).isLoggable(Level.CONFIG);
- }
-
- public static void logInfo(final String appName, final String message) {
- Logger.getLogger(appName).info(message);
- }
- public static void logInfo(final String appName, final String message, final Throwable thrown) {
- Logger.getLogger(appName).log(Level.INFO,message,thrown);
- }
- public static boolean isInfo(final String appName) {
- return Logger.getLogger(appName).isLoggable(Level.INFO);
- }
-
- public static void logFine(final String appName, final String message) {
- Logger.getLogger(appName).fine(message);
- }
- public static void logFine(final String appName, final String message, final Throwable thrown) {
- Logger.getLogger(appName).log(Level.FINE,message,thrown);
- }
- public static boolean isFine(final String appName) {
- return Logger.getLogger(appName).isLoggable(Level.FINE);
- }
-
- public static void logFiner(final String appName, final String message) {
- Logger.getLogger(appName).finer(message);
- }
- public static void logFiner(final String appName, final String message, final Throwable thrown) {
- Logger.getLogger(appName).log(Level.FINER,message,thrown);
- }
- public static boolean isFiner(final String appName) {
- return Logger.getLogger(appName).isLoggable(Level.FINER);
- }
-
- public static void logFinest(final String appName, final String message) {
- Logger.getLogger(appName).finest(message);
- }
- public static void logFinest(final String appName, final String message, final Throwable thrown) {
- Logger.getLogger(appName).log(Level.FINEST,message,thrown);
- }
- public static boolean isFinest(final String appName) {
- return Logger.getLogger(appName).isLoggable(Level.FINEST);
- }
-
- public static final void configureLogging(final File homePath, final File loggingConfigFile) throws SecurityException, FileNotFoundException, IOException {
- FileInputStream fileIn = null;
- try {
- System.out.println("STARTUP: Trying to load logging configuration from file " + loggingConfigFile.toString());
- fileIn = new FileInputStream(loggingConfigFile);
-
- // loading the logger configuration from file
- final LogManager logManager = LogManager.getLogManager();
- logManager.readConfiguration(fileIn);
-
- // creating the logging directory
- final String logPattern = logManager.getProperty("java.util.logging.FileHandler.pattern");
- int stripPos = logPattern.lastIndexOf('/');
- if (stripPos < 0) stripPos = logPattern.lastIndexOf(File.pathSeparatorChar);
- File log = new File(logPattern.substring(0, stripPos));
- if (!log.isAbsolute()) log = new File(homePath, log.getPath());
- if (!log.canRead()) log.mkdir();
-
- // TODO: changing the pattern settings for the file handlers
-
- // generating the root logger
- /*Logger logger =*/ Logger.getLogger("");
-
-// System.setOut(new PrintStream(new LoggerOutputStream(Logger.getLogger("STDOUT"),Level.FINEST)));
-// System.setErr(new PrintStream(new LoggerOutputStream(Logger.getLogger("STDERR"),Level.SEVERE)));
- } finally {
- if (fileIn != null) try {fileIn.close();}catch(final Exception e){}
- }
- }
-
- public static final String format(final String s, int n, final int fillChar) {
- final int l = s.length();
- if (l >= n) return s;
- final StringBuilder sb = new StringBuilder(l + n);
- for (final int i = l + n; i > n; n--) sb.insert(0, fillChar);
- return sb.toString();
- }
-
- public static final boolean allZero(final byte[] a) {
- return allZero(a, 0, a.length);
- }
-
- public static final boolean allZero(final byte[] a, final int astart, final int alength) {
- for (int i = 0; i < alength; i++) if (a[astart + i] != 0) return false;
- return true;
- }
-
-}
diff --git a/source/de/anomic/kelondro/util/MemoryControl.java b/source/de/anomic/kelondro/util/MemoryControl.java
index ca4277b84..b2cef28fb 100644
--- a/source/de/anomic/kelondro/util/MemoryControl.java
+++ b/source/de/anomic/kelondro/util/MemoryControl.java
@@ -26,6 +26,7 @@
package de.anomic.kelondro.util;
import de.anomic.tools.Formatter;
+import de.anomic.yacy.logging.Log;
/**
* Use this to get information about memory usage or try to free some memory
diff --git a/source/de/anomic/language/identification/LanguageStatistics.java b/source/de/anomic/language/identification/LanguageStatistics.java
index b32f71bcd..ff6e14d64 100644
--- a/source/de/anomic/language/identification/LanguageStatistics.java
+++ b/source/de/anomic/language/identification/LanguageStatistics.java
@@ -33,7 +33,7 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Set;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
/**
* This class can store statistical data of a language.
diff --git a/source/de/anomic/language/identification/LanguageStatisticsHolder.java b/source/de/anomic/language/identification/LanguageStatisticsHolder.java
index 319dd0150..1be45875b 100644
--- a/source/de/anomic/language/identification/LanguageStatisticsHolder.java
+++ b/source/de/anomic/language/identification/LanguageStatisticsHolder.java
@@ -28,7 +28,7 @@ import java.io.File;
import java.io.FilenameFilter;
import java.util.Vector;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
/**
* This class loads and provides several language statistics to the system.
diff --git a/source/de/anomic/net/UPnP.java b/source/de/anomic/net/UPnP.java
index 40d921867..f2abdbd6f 100644
--- a/source/de/anomic/net/UPnP.java
+++ b/source/de/anomic/net/UPnP.java
@@ -36,9 +36,9 @@ import net.sbbi.upnp.DiscoveryEventHandler;
import net.sbbi.upnp.devices.UPNPRootDevice;
import net.sbbi.upnp.impls.InternetGatewayDevice;
import net.sbbi.upnp.messages.UPNPResponseException;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.plasma.plasmaSwitchboardConstants;
+import de.anomic.yacy.logging.Log;
public class UPnP {
diff --git a/source/de/anomic/plasma/parser/AbstractParser.java b/source/de/anomic/plasma/parser/AbstractParser.java
index 620a5364e..3140ab047 100644
--- a/source/de/anomic/plasma/parser/AbstractParser.java
+++ b/source/de/anomic/plasma/parser/AbstractParser.java
@@ -33,11 +33,11 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.plasmaParser;
import de.anomic.plasma.plasmaParserDocument;
import de.anomic.server.serverThread;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
/**
* New classes implementing the {@link de.anomic.plasma.parser.Parser} interface
diff --git a/source/de/anomic/plasma/parser/Parser.java b/source/de/anomic/plasma/parser/Parser.java
index c213ac620..7b8705c97 100644
--- a/source/de/anomic/plasma/parser/Parser.java
+++ b/source/de/anomic/plasma/parser/Parser.java
@@ -29,9 +29,9 @@ import java.io.File;
import java.io.InputStream;
import java.util.Hashtable;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.plasmaParserDocument;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
/**
* This interface defines a list of methods that needs to be implemented
diff --git a/source/de/anomic/plasma/parser/odt/odtParser.java b/source/de/anomic/plasma/parser/odt/odtParser.java
index 65e3e6798..3cd82547a 100644
--- a/source/de/anomic/plasma/parser/odt/odtParser.java
+++ b/source/de/anomic/plasma/parser/odt/odtParser.java
@@ -45,7 +45,6 @@ import com.catcode.odf.OpenDocumentTextInputStream;
import de.anomic.crawler.HTTPLoader;
import de.anomic.http.httpClient;
import de.anomic.http.httpRequestHeader;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.FileUtils;
import de.anomic.plasma.plasmaParserDocument;
import de.anomic.plasma.parser.AbstractParser;
@@ -53,6 +52,7 @@ import de.anomic.plasma.parser.Parser;
import de.anomic.plasma.parser.ParserException;
import de.anomic.server.serverCharBuffer;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
public class odtParser extends AbstractParser implements Parser {
diff --git a/source/de/anomic/plasma/parser/sevenzip/SZParserExtractCallback.java b/source/de/anomic/plasma/parser/sevenzip/SZParserExtractCallback.java
index 9897f8687..442992e12 100644
--- a/source/de/anomic/plasma/parser/sevenzip/SZParserExtractCallback.java
+++ b/source/de/anomic/plasma/parser/sevenzip/SZParserExtractCallback.java
@@ -29,13 +29,13 @@ import java.io.OutputStream;
import SevenZip.ArchiveExtractCallback;
import SevenZip.Archive.IInArchive;
import SevenZip.Archive.SevenZipEntry;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.plasmaParser;
import de.anomic.plasma.plasmaParserDocument;
import de.anomic.plasma.parser.AbstractParser;
import de.anomic.plasma.parser.ParserException;
import de.anomic.server.serverCachedFileOutputStream;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
// wrapper class to redirect output of standard ArchiveExtractCallback to serverLog
// and parse the extracted content
diff --git a/source/de/anomic/plasma/plasmaHTCache.java b/source/de/anomic/plasma/plasmaHTCache.java
index 4e64ac7ca..8d9fc89cd 100644
--- a/source/de/anomic/plasma/plasmaHTCache.java
+++ b/source/de/anomic/plasma/plasmaHTCache.java
@@ -47,11 +47,11 @@ import de.anomic.kelondro.blob.BLOBCompressor;
import de.anomic.kelondro.blob.BLOBHeap;
import de.anomic.kelondro.blob.MapView;
import de.anomic.kelondro.order.Base64Order;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.FileUtils;
import de.anomic.plasma.parser.Document;
import de.anomic.yacy.yacySeedDB;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
public final class plasmaHTCache {
diff --git a/source/de/anomic/plasma/plasmaParser.java b/source/de/anomic/plasma/plasmaParser.java
index 2698e4f17..499e7ad68 100644
--- a/source/de/anomic/plasma/plasmaParser.java
+++ b/source/de/anomic/plasma/plasmaParser.java
@@ -60,13 +60,13 @@ import de.anomic.htmlFilter.htmlFilterInputStream;
import de.anomic.htmlFilter.htmlFilterWriter;
import de.anomic.http.httpClient;
import de.anomic.http.httpResponse;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.FileUtils;
import de.anomic.plasma.parser.Parser;
import de.anomic.plasma.parser.ParserException;
import de.anomic.plasma.parser.ParserInfo;
import de.anomic.tools.ListDirs;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
public final class plasmaParser {
public static final String PARSER_MODE_PROXY = "PROXY";
diff --git a/source/de/anomic/plasma/plasmaParserConfig.java b/source/de/anomic/plasma/plasmaParserConfig.java
index 282a556b6..9c971b5d3 100644
--- a/source/de/anomic/plasma/plasmaParserConfig.java
+++ b/source/de/anomic/plasma/plasmaParserConfig.java
@@ -33,9 +33,9 @@ import java.util.Hashtable;
import java.util.Iterator;
import java.util.Set;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.parser.Parser;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
public class plasmaParserConfig {
/**
diff --git a/source/de/anomic/plasma/plasmaRankingDistribution.java b/source/de/anomic/plasma/plasmaRankingDistribution.java
index 30e6458b2..b96cb6d3e 100644
--- a/source/de/anomic/plasma/plasmaRankingDistribution.java
+++ b/source/de/anomic/plasma/plasmaRankingDistribution.java
@@ -30,12 +30,12 @@ import java.io.IOException;
import java.util.Random;
import java.util.StringTokenizer;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.FileUtils;
import de.anomic.yacy.yacyClient;
import de.anomic.yacy.yacySeed;
import de.anomic.yacy.yacySeedDB;
import de.anomic.yacy.yacyVersion;
+import de.anomic.yacy.logging.Log;
public final class plasmaRankingDistribution {
diff --git a/source/de/anomic/plasma/plasmaSearchEvent.java b/source/de/anomic/plasma/plasmaSearchEvent.java
index 399f853b2..8701ebfd9 100644
--- a/source/de/anomic/plasma/plasmaSearchEvent.java
+++ b/source/de/anomic/plasma/plasmaSearchEvent.java
@@ -49,7 +49,6 @@ import de.anomic.kelondro.util.MemoryControl;
import de.anomic.kelondro.util.SetTools;
import de.anomic.kelondro.util.SortStack;
import de.anomic.kelondro.util.SortStore;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.parser.Word;
import de.anomic.plasma.parser.Condenser;
import de.anomic.plasma.plasmaSearchRankingProcess.NavigatorEntry;
@@ -61,6 +60,7 @@ import de.anomic.yacy.yacySeed;
import de.anomic.yacy.yacySeedDB;
import de.anomic.yacy.yacyURL;
import de.anomic.yacy.dht.FlatWordPartitionScheme;
+import de.anomic.yacy.logging.Log;
public final class plasmaSearchEvent {
diff --git a/source/de/anomic/plasma/plasmaSearchImages.java b/source/de/anomic/plasma/plasmaSearchImages.java
index 1ce82afb8..2ee577ddc 100644
--- a/source/de/anomic/plasma/plasmaSearchImages.java
+++ b/source/de/anomic/plasma/plasmaSearchImages.java
@@ -31,9 +31,9 @@ import java.util.Iterator;
import de.anomic.htmlFilter.htmlFilterContentScraper;
import de.anomic.htmlFilter.htmlFilterImageEntry;
import de.anomic.kelondro.util.DateFormatter;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.parser.ParserException;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
public final class plasmaSearchImages {
diff --git a/source/de/anomic/plasma/plasmaSnippetCache.java b/source/de/anomic/plasma/plasmaSnippetCache.java
index 73bb1ffd8..8631c69e3 100644
--- a/source/de/anomic/plasma/plasmaSnippetCache.java
+++ b/source/de/anomic/plasma/plasmaSnippetCache.java
@@ -46,7 +46,6 @@ import de.anomic.kelondro.order.Base64Order;
import de.anomic.kelondro.text.metadataPrototype.URLMetadataRow;
import de.anomic.kelondro.util.ScoreCluster;
import de.anomic.kelondro.util.SetTools;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.parser.Document;
import de.anomic.plasma.parser.ParserException;
import de.anomic.plasma.parser.Word;
@@ -54,6 +53,7 @@ import de.anomic.plasma.parser.Condenser;
import de.anomic.search.Query;
import de.anomic.yacy.yacySearch;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
public class plasmaSnippetCache {
diff --git a/source/de/anomic/plasma/plasmaSwitchboard.java b/source/de/anomic/plasma/plasmaSwitchboard.java
index 6a777739b..42ce16b45 100644
--- a/source/de/anomic/plasma/plasmaSwitchboard.java
+++ b/source/de/anomic/plasma/plasmaSwitchboard.java
@@ -156,7 +156,6 @@ import de.anomic.kelondro.text.metadataPrototype.URLMetadataRow;
import de.anomic.kelondro.order.Base64Order;
import de.anomic.kelondro.util.DateFormatter;
import de.anomic.kelondro.util.FileUtils;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.MemoryControl;
import de.anomic.kelondro.util.SetTools;
import de.anomic.net.UPnP;
@@ -194,6 +193,7 @@ import de.anomic.yacy.yacyRelease;
import de.anomic.yacy.yacyVersion;
import de.anomic.yacy.dht.Dispatcher;
import de.anomic.yacy.dht.PeerSelection;
+import de.anomic.yacy.logging.Log;
public final class plasmaSwitchboard extends serverAbstractSwitch implements serverSwitch {
diff --git a/source/de/anomic/plasma/plasmaWebStructure.java b/source/de/anomic/plasma/plasmaWebStructure.java
index 4af310904..b13a779b8 100644
--- a/source/de/anomic/plasma/plasmaWebStructure.java
+++ b/source/de/anomic/plasma/plasmaWebStructure.java
@@ -40,10 +40,10 @@ import java.util.TreeSet;
import de.anomic.kelondro.order.Base64Order;
import de.anomic.kelondro.order.MicroDate;
import de.anomic.kelondro.util.DateFormatter;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.FileUtils;
import de.anomic.plasma.parser.Condenser;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
public class plasmaWebStructure {
diff --git a/source/de/anomic/server/serverAbstractBlockingThread.java b/source/de/anomic/server/serverAbstractBlockingThread.java
index c7548aa14..7023656dd 100644
--- a/source/de/anomic/server/serverAbstractBlockingThread.java
+++ b/source/de/anomic/server/serverAbstractBlockingThread.java
@@ -25,7 +25,7 @@
package de.anomic.server;
import de.anomic.kelondro.util.MemoryControl;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public abstract class serverAbstractBlockingThread extends serverAbstractThread implements serverBlockingThread {
diff --git a/source/de/anomic/server/serverAbstractBusyThread.java b/source/de/anomic/server/serverAbstractBusyThread.java
index 37f14174e..7585ea3ff 100644
--- a/source/de/anomic/server/serverAbstractBusyThread.java
+++ b/source/de/anomic/server/serverAbstractBusyThread.java
@@ -27,7 +27,7 @@ package de.anomic.server;
import java.net.SocketException;
import de.anomic.kelondro.util.MemoryControl;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public abstract class serverAbstractBusyThread extends serverAbstractThread implements serverBusyThread {
diff --git a/source/de/anomic/server/serverAbstractSwitch.java b/source/de/anomic/server/serverAbstractSwitch.java
index 3eaafe69a..257a8ab11 100644
--- a/source/de/anomic/server/serverAbstractSwitch.java
+++ b/source/de/anomic/server/serverAbstractSwitch.java
@@ -31,8 +31,8 @@ import java.util.SortedMap;
import java.util.TreeMap;
import java.util.concurrent.LinkedBlockingQueue;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.FileUtils;
+import de.anomic.yacy.logging.Log;
public abstract class serverAbstractSwitch implements serverSwitch {
diff --git a/source/de/anomic/server/serverAbstractThread.java b/source/de/anomic/server/serverAbstractThread.java
index e43887228..11a0d4c63 100644
--- a/source/de/anomic/server/serverAbstractThread.java
+++ b/source/de/anomic/server/serverAbstractThread.java
@@ -34,7 +34,7 @@ package de.anomic.server;
import java.nio.channels.ClosedByInterruptException;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public abstract class serverAbstractThread extends Thread implements serverThread {
diff --git a/source/de/anomic/server/serverCore.java b/source/de/anomic/server/serverCore.java
index 5ee76cc70..ae8143dbb 100644
--- a/source/de/anomic/server/serverCore.java
+++ b/source/de/anomic/server/serverCore.java
@@ -58,9 +58,9 @@ import javax.net.ssl.SSLSocketFactory;
import de.anomic.icap.icapd;
import de.anomic.kelondro.util.ByteBuffer;
-import de.anomic.kelondro.util.Log;
import de.anomic.tools.PKCS12Tool;
import de.anomic.urlRedirector.urlRedirectord;
+import de.anomic.yacy.logging.Log;
public final class serverCore extends serverAbstractBusyThread implements serverBusyThread {
diff --git a/source/de/anomic/server/serverInstantBlockingThread.java b/source/de/anomic/server/serverInstantBlockingThread.java
index 5658b4c5b..4e27ef4a2 100644
--- a/source/de/anomic/server/serverInstantBlockingThread.java
+++ b/source/de/anomic/server/serverInstantBlockingThread.java
@@ -28,7 +28,7 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.concurrent.ConcurrentHashMap;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public class serverInstantBlockingThread extends serverAbstractBlockingThread implements serverBlockingThread {
diff --git a/source/de/anomic/server/serverInstantBusyThread.java b/source/de/anomic/server/serverInstantBusyThread.java
index 26b708ce5..a955a4663 100644
--- a/source/de/anomic/server/serverInstantBusyThread.java
+++ b/source/de/anomic/server/serverInstantBusyThread.java
@@ -25,7 +25,7 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.TreeMap;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public final class serverInstantBusyThread extends serverAbstractBusyThread implements serverBusyThread {
diff --git a/source/de/anomic/server/serverProcessor.java b/source/de/anomic/server/serverProcessor.java
index 92d96494b..44f77e6b1 100644
--- a/source/de/anomic/server/serverProcessor.java
+++ b/source/de/anomic/server/serverProcessor.java
@@ -33,8 +33,8 @@ import java.util.concurrent.Executors;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.NamePrefixThreadFactory;
+import de.anomic.yacy.logging.Log;
public class serverProcessor {
diff --git a/source/de/anomic/server/serverSwitch.java b/source/de/anomic/server/serverSwitch.java
index 3e0392c7c..57fb67189 100644
--- a/source/de/anomic/server/serverSwitch.java
+++ b/source/de/anomic/server/serverSwitch.java
@@ -36,7 +36,7 @@ import java.util.Iterator;
import java.util.Map;
import java.util.SortedMap;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public interface serverSwitch {
diff --git a/source/de/anomic/server/serverSwitchAbstractAction.java b/source/de/anomic/server/serverSwitchAbstractAction.java
index bb982d075..ea294c766 100644
--- a/source/de/anomic/server/serverSwitchAbstractAction.java
+++ b/source/de/anomic/server/serverSwitchAbstractAction.java
@@ -21,7 +21,7 @@
package de.anomic.server;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public abstract class serverSwitchAbstractAction {
diff --git a/source/de/anomic/server/serverSwitchAction.java b/source/de/anomic/server/serverSwitchAction.java
index b7b3892d9..3be0fc891 100644
--- a/source/de/anomic/server/serverSwitchAction.java
+++ b/source/de/anomic/server/serverSwitchAction.java
@@ -21,7 +21,7 @@
package de.anomic.server;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public interface serverSwitchAction {
diff --git a/source/de/anomic/server/serverSystem.java b/source/de/anomic/server/serverSystem.java
index 2576f5e65..967e7fd1e 100644
--- a/source/de/anomic/server/serverSystem.java
+++ b/source/de/anomic/server/serverSystem.java
@@ -33,9 +33,9 @@ import java.util.List;
import java.util.Properties;
import java.util.Vector;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.FileUtils;
import de.anomic.tools.consoleInterface;
+import de.anomic.yacy.logging.Log;
public final class serverSystem {
diff --git a/source/de/anomic/server/serverThread.java b/source/de/anomic/server/serverThread.java
index bf9b29d95..ff96a5948 100644
--- a/source/de/anomic/server/serverThread.java
+++ b/source/de/anomic/server/serverThread.java
@@ -24,7 +24,7 @@
package de.anomic.server;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public interface serverThread {
diff --git a/source/de/anomic/tools/DidYouMean.java b/source/de/anomic/tools/DidYouMean.java
index 8bb7afffc..cab32cf41 100644
--- a/source/de/anomic/tools/DidYouMean.java
+++ b/source/de/anomic/tools/DidYouMean.java
@@ -7,8 +7,8 @@ import java.util.concurrent.LinkedBlockingQueue;
import de.anomic.kelondro.text.IndexCell;
import de.anomic.kelondro.text.referencePrototype.WordReference;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.parser.Word;
+import de.anomic.yacy.logging.Log;
// People make mistakes when they type words.
// The most common mistakes are the four categories listed below:
diff --git a/source/de/anomic/tools/consoleInterface.java b/source/de/anomic/tools/consoleInterface.java
index 039a11d59..35d80d442 100755
--- a/source/de/anomic/tools/consoleInterface.java
+++ b/source/de/anomic/tools/consoleInterface.java
@@ -28,7 +28,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Semaphore;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public class consoleInterface extends Thread
{
diff --git a/source/de/anomic/tools/diskUsage.java b/source/de/anomic/tools/diskUsage.java
index 39411f5e0..ec179e0e8 100644
--- a/source/de/anomic/tools/diskUsage.java
+++ b/source/de/anomic/tools/diskUsage.java
@@ -35,7 +35,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public class diskUsage {
diff --git a/source/de/anomic/tools/gzip.java b/source/de/anomic/tools/gzip.java
index 70de93166..4238d003a 100644
--- a/source/de/anomic/tools/gzip.java
+++ b/source/de/anomic/tools/gzip.java
@@ -34,7 +34,7 @@ import java.io.OutputStream;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public class gzip {
diff --git a/source/de/anomic/tools/mediawikiIndex.java b/source/de/anomic/tools/mediawikiIndex.java
index 4bdb17f9e..b4149e84b 100644
--- a/source/de/anomic/tools/mediawikiIndex.java
+++ b/source/de/anomic/tools/mediawikiIndex.java
@@ -59,11 +59,11 @@ import java.util.concurrent.TimeoutException;
import de.anomic.data.wiki.wikiCode;
import de.anomic.data.wiki.wikiParser;
import de.anomic.kelondro.util.ByteBuffer;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.plasmaParser;
import de.anomic.plasma.plasmaParserDocument;
import de.anomic.plasma.parser.ParserException;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
/*
* this class provides data structures to read a mediawiki dump file in xml format
diff --git a/source/de/anomic/tools/tarTools.java b/source/de/anomic/tools/tarTools.java
index 46cd610a8..d2b68ac6c 100644
--- a/source/de/anomic/tools/tarTools.java
+++ b/source/de/anomic/tools/tarTools.java
@@ -35,7 +35,7 @@ import java.util.zip.GZIPInputStream;
import com.ice.tar.TarEntry;
import com.ice.tar.TarInputStream;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public class tarTools {
diff --git a/source/de/anomic/urlRedirector/urlRedirectord.java b/source/de/anomic/urlRedirector/urlRedirectord.java
index 00c167350..9c4facb6a 100644
--- a/source/de/anomic/urlRedirector/urlRedirectord.java
+++ b/source/de/anomic/urlRedirector/urlRedirectord.java
@@ -12,13 +12,13 @@ import de.anomic.crawler.CrawlProfile;
import de.anomic.data.userDB;
import de.anomic.http.httpClient;
import de.anomic.http.httpResponseHeader;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.plasmaParser;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.server.serverCore;
import de.anomic.server.serverHandler;
import de.anomic.server.serverCore.Session;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
public class urlRedirectord implements serverHandler, Cloneable {
diff --git a/source/de/anomic/xml/RSSReader.java b/source/de/anomic/xml/RSSReader.java
index 799ed555a..98bc93a90 100644
--- a/source/de/anomic/xml/RSSReader.java
+++ b/source/de/anomic/xml/RSSReader.java
@@ -40,7 +40,7 @@ import org.xml.sax.helpers.DefaultHandler;
import de.anomic.content.RSSMessage;
import de.anomic.kelondro.util.ByteBuffer;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public class RSSReader extends DefaultHandler {
diff --git a/source/de/anomic/xml/opensearchdescriptionReader.java b/source/de/anomic/xml/opensearchdescriptionReader.java
index b23cf2471..16ec7cfa6 100644
--- a/source/de/anomic/xml/opensearchdescriptionReader.java
+++ b/source/de/anomic/xml/opensearchdescriptionReader.java
@@ -41,7 +41,7 @@ import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import de.anomic.kelondro.util.ByteBuffer;
-import de.anomic.kelondro.util.Log;
+import de.anomic.yacy.logging.Log;
public class opensearchdescriptionReader extends DefaultHandler {
diff --git a/source/de/anomic/yacy/dht/Dispatcher.java b/source/de/anomic/yacy/dht/Dispatcher.java
index e154d849f..db088144b 100755
--- a/source/de/anomic/yacy/dht/Dispatcher.java
+++ b/source/de/anomic/yacy/dht/Dispatcher.java
@@ -39,10 +39,10 @@ import de.anomic.kelondro.text.MetadataRepository;
import de.anomic.kelondro.text.Segment;
import de.anomic.kelondro.text.referencePrototype.WordReference;
import de.anomic.kelondro.text.referencePrototype.WordReferenceRow;
-import de.anomic.kelondro.util.Log;
import de.anomic.server.serverProcessor;
import de.anomic.yacy.yacySeed;
import de.anomic.yacy.yacySeedDB;
+import de.anomic.yacy.logging.Log;
public class Dispatcher {
diff --git a/source/de/anomic/yacy/dht/PeerSelection.java b/source/de/anomic/yacy/dht/PeerSelection.java
index 6f680f55b..76b0780bc 100755
--- a/source/de/anomic/yacy/dht/PeerSelection.java
+++ b/source/de/anomic/yacy/dht/PeerSelection.java
@@ -30,7 +30,6 @@ import java.util.HashSet;
import java.util.Iterator;
import de.anomic.kelondro.util.DateFormatter;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.kelondroException;
import de.anomic.kelondro.order.Base64Order;
import de.anomic.kelondro.order.Digest;
@@ -40,6 +39,7 @@ import de.anomic.yacy.yacySeed;
import de.anomic.yacy.yacySeedDB;
import de.anomic.yacy.yacyVersion;
import de.anomic.yacy.dht.PartitionScheme;
+import de.anomic.yacy.logging.Log;
/*
diff --git a/source/de/anomic/yacy/dht/Transmission.java b/source/de/anomic/yacy/dht/Transmission.java
index 50d252b6a..866ae42fd 100644
--- a/source/de/anomic/yacy/dht/Transmission.java
+++ b/source/de/anomic/yacy/dht/Transmission.java
@@ -38,11 +38,11 @@ import de.anomic.kelondro.text.MetadataRepository;
import de.anomic.kelondro.text.Segment;
import de.anomic.kelondro.text.metadataPrototype.URLMetadataRow;
import de.anomic.kelondro.text.referencePrototype.WordReference;
-import de.anomic.kelondro.util.Log;
import de.anomic.server.serverProcessorJob;
import de.anomic.yacy.yacyClient;
import de.anomic.yacy.yacySeed;
import de.anomic.yacy.yacySeedDB;
+import de.anomic.yacy.logging.Log;
public class Transmission {
diff --git a/source/de/anomic/yacy/logging/Log.java b/source/de/anomic/yacy/logging/Log.java
new file mode 100644
index 000000000..da8b9ff75
--- /dev/null
+++ b/source/de/anomic/yacy/logging/Log.java
@@ -0,0 +1,395 @@
+// Log.java
+// -------------------------------------
+// (C) by Michael Peter Christen; mc@yacy.net
+// first published on http://www.anomic.de
+// Frankfurt, Germany, 2004
+// last major change: $LastChangedDate: 2009-01-30 14:48:11 +0000 (Fr, 30 Jan 2009) $ by $LastChangedBy: orbiter $
+// Revision: $LastChangedRevision: 5539 $
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+package de.anomic.yacy.logging;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.logging.Level;
+import java.util.logging.LogManager;
+import java.util.logging.Logger;
+
+public final class Log {
+
+ // log-level categories
+ public static final int LOGLEVEL_ZERO = Level.OFF.intValue(); // no output at all
+ public static final int LOGLEVEL_SEVERE = Level.SEVERE.intValue(); // system-level error, internal cause, critical and not fixeable (i.e. inconsistency)
+ public static final int LOGLEVEL_WARNING = Level.WARNING.intValue(); // uncritical service failure, may require user activity (i.e. input required, wrong authorization)
+ public static final int LOGLEVEL_CONFIG = Level.CONFIG.intValue(); // regular system status information (i.e. start-up messages)
+ public static final int LOGLEVEL_INFO = Level.INFO.intValue(); // regular action information (i.e. any httpd request URL)
+ public static final int LOGLEVEL_FINE = Level.FINE.intValue(); // in-function status debug output
+ public static final int LOGLEVEL_FINER = Level.FINER.intValue(); // in-function status debug output
+ public static final int LOGLEVEL_FINEST = Level.FINEST.intValue(); // in-function status debug output
+
+ // these categories are also present as character tokens
+ public static final char LOGTOKEN_ZERO = 'Z';
+ public static final char LOGTOKEN_SEVERE = 'E';
+ public static final char LOGTOKEN_WARNING = 'W';
+ public static final char LOGTOKEN_CONFIG = 'S';
+ public static final char LOGTOKEN_INFO = 'I';
+ public static final char LOGTOKEN_FINE = 'D';
+ public static final char LOGTOKEN_FINER = 'D';
+ public static final char LOGTOKEN_FINEST = 'D';
+
+ private final Logger theLogger;
+
+ public Log(final String appName) {
+ this.theLogger = Logger.getLogger(appName);
+ //this.theLogger.setLevel(Level.FINEST); // set a default level
+ }
+
+ public void setLevel(final Level newLevel) {
+ this.theLogger.setLevel(newLevel);
+ }
+
+ public void logSevere(final String message) {
+ enQueueLog(this.theLogger, Level.SEVERE, message);
+ }
+
+ public void logSevere(final String message, final Throwable thrown) {
+ enQueueLog(this.theLogger, Level.SEVERE, message, thrown);
+ }
+
+ public boolean isSevere() {
+ return this.theLogger.isLoggable(Level.SEVERE);
+ }
+
+ public void logWarning(final String message) {
+ enQueueLog(this.theLogger, Level.WARNING, message);
+ }
+
+ public void logWarning(final String message, final Throwable thrown) {
+ enQueueLog(this.theLogger, Level.WARNING, message, thrown);
+ }
+
+ public boolean isWarning() {
+ return this.theLogger.isLoggable(Level.WARNING);
+ }
+
+ public void logConfig(final String message) {
+ enQueueLog(this.theLogger, Level.CONFIG, message);
+ }
+
+ public void logConfig(final String message, final Throwable thrown) {
+ enQueueLog(this.theLogger, Level.CONFIG, message, thrown);
+ }
+
+ public boolean isConfig() {
+ return this.theLogger.isLoggable(Level.CONFIG);
+ }
+
+ public void logInfo(final String message) {
+ enQueueLog(this.theLogger, Level.INFO, message);
+ }
+
+ public void logInfo(final String message, final Throwable thrown) {
+ enQueueLog(this.theLogger, Level.INFO, message, thrown);
+ }
+
+ public boolean isInfo() {
+ return this.theLogger.isLoggable(Level.INFO);
+ }
+
+ public void logFine(final String message) {
+ enQueueLog(this.theLogger, Level.FINE, message);
+ }
+
+ public void logFine(final String message, final Throwable thrown) {
+ enQueueLog(this.theLogger, Level.FINE, message, thrown);
+ }
+
+ public boolean isFine() {
+ return this.theLogger.isLoggable(Level.FINE);
+ }
+
+ public void logFiner(final String message) {
+ enQueueLog(this.theLogger, Level.FINER, message);
+ }
+
+ public void logFiner(final String message, final Throwable thrown) {
+ enQueueLog(this.theLogger, Level.FINER, message, thrown);
+ }
+
+ public boolean isFiner() {
+ return this.theLogger.isLoggable(Level.FINER);
+ }
+
+ public void logFinest(final String message) {
+ enQueueLog(this.theLogger, Level.FINEST, message);
+ }
+
+ public void logFinest(final String message, final Throwable thrown) {
+ enQueueLog(this.theLogger, Level.FINEST, message, thrown);
+ }
+
+ public boolean isFinest() {
+ return this.theLogger.isLoggable(Level.FINEST);
+ }
+
+ public boolean isLoggable(final Level level) {
+ return this.theLogger.isLoggable(level);
+ }
+
+
+ // static log messages
+ public static void logSevere(final String appName, final String message) {
+ enQueueLog(appName, Level.SEVERE, message);
+ }
+ public static void logSevere(final String appName, final String message, final Throwable thrown) {
+ enQueueLog(appName, Level.SEVERE, message, thrown);
+ }
+
+ public static void logWarning(final String appName, final String message) {
+ enQueueLog(appName, Level.WARNING, message);
+ }
+ public static void logWarning(final String appName, final String message, final Throwable thrown) {
+ enQueueLog(appName, Level.WARNING, message, thrown);
+ }
+
+ public static void logConfig(final String appName, final String message) {
+ enQueueLog(appName, Level.CONFIG, message);
+ }
+ public static void logConfig(final String appName, final String message, final Throwable thrown) {
+ enQueueLog(appName, Level.CONFIG, message, thrown);
+ }
+
+ public static void logInfo(final String appName, final String message) {
+ enQueueLog(appName, Level.INFO, message);
+ }
+ public static void logInfo(final String appName, final String message, final Throwable thrown) {
+ enQueueLog(appName, Level.INFO, message, thrown);
+ }
+
+ public static void logFine(final String appName, final String message) {
+ enQueueLog(appName, Level.FINE, message);
+ }
+ public static void logFine(final String appName, final String message, final Throwable thrown) {
+ enQueueLog(appName, Level.FINE, message, thrown);
+ }
+ public static boolean isFine(final String appName) {
+ return Logger.getLogger(appName).isLoggable(Level.FINE);
+ }
+
+ public static void logFiner(final String appName, final String message) {
+ enQueueLog(appName, Level.FINER, message);
+ }
+ public static void logFiner(final String appName, final String message, final Throwable thrown) {
+ enQueueLog(appName, Level.FINER, message, thrown);
+ }
+
+ public static void logFinest(final String appName, final String message) {
+ enQueueLog(appName, Level.FINEST, message);
+ }
+ public static void logFinest(final String appName, final String message, final Throwable thrown) {
+ enQueueLog(appName, Level.FINEST, message, thrown);
+ }
+ public static boolean isFinest(final String appName) {
+ return Logger.getLogger(appName).isLoggable(Level.FINEST);
+ }
+
+ private static void enQueueLog(Logger logger, Level level, String message, final Throwable thrown) {
+ if (logRunnerThread == null || !logRunnerThread.isAlive()) {
+ logger.log(level, message, thrown);
+ } else {
+ try {
+ logQueue.put(new logEntry(logger, level, message, thrown));
+ } catch (InterruptedException e) {
+ logger.log(level, message, thrown);
+ }
+ }
+ }
+
+ private static void enQueueLog(Logger logger, Level level, String message) {
+ if (logRunnerThread == null || !logRunnerThread.isAlive()) {
+ logger.log(level, message);
+ } else {
+ try {
+ logQueue.put(new logEntry(logger, level, message));
+ } catch (InterruptedException e) {
+ logger.log(level, message);
+ }
+ }
+ }
+
+ private static void enQueueLog(String loggername, Level level, String message, final Throwable thrown) {
+ if (logRunnerThread == null || !logRunnerThread.isAlive()) {
+ Logger.getLogger(loggername).log(level, message, thrown);
+ } else {
+ try {
+ logQueue.put(new logEntry(loggername, level, message, thrown));
+ } catch (InterruptedException e) {
+ Logger.getLogger(loggername).log(level, message, thrown);
+ }
+ }
+ }
+
+ private static void enQueueLog(String loggername, Level level, String message) {
+ if (logRunnerThread == null || !logRunnerThread.isAlive()) {
+ Logger.getLogger(loggername).log(level, message);
+ } else {
+ try {
+ logQueue.put(new logEntry(loggername, level, message));
+ } catch (InterruptedException e) {
+ Logger.getLogger(loggername).log(level, message);
+ }
+ }
+ }
+
+ protected static class logEntry {
+ public final Logger logger;
+ public final String loggername;
+ public final Level level;
+ public final String message;
+ public final Throwable thrown;
+ public logEntry(Logger logger, Level level, String message, final Throwable thrown) {
+ this.logger = logger;
+ this.loggername = null;
+ this.level = level;
+ this.message = message;
+ this.thrown = thrown;
+ }
+ public logEntry(Logger logger, Level level, String message) {
+ this.logger = logger;
+ this.loggername = null;
+ this.level = level;
+ this.message = message;
+ this.thrown = null;
+ }
+ public logEntry(String loggername, Level level, String message, final Throwable thrown) {
+ this.logger = null;
+ this.loggername = loggername;
+ this.level = level;
+ this.message = message;
+ this.thrown = thrown;
+ }
+ public logEntry(String loggername, Level level, String message) {
+ this.logger = null;
+ this.loggername = loggername;
+ this.level = level;
+ this.message = message;
+ this.thrown = null;
+ }
+ public logEntry() {
+ this.logger = null;
+ this.loggername = null;
+ this.level = null;
+ this.message = null;
+ this.thrown = null;
+ }
+ }
+
+ private static logEntry poison = new logEntry();
+ private static BlockingQueue logQueue = new LinkedBlockingQueue();
+ private static logRunner logRunnerThread = null;
+
+ protected static class logRunner extends Thread {
+
+ public void run() {
+ logEntry entry;
+ try {
+ while ((entry = logQueue.take()) != poison) {
+ if (entry.logger == null) {
+ assert entry.loggername != null;
+ if (entry.thrown == null) {
+ Logger.getLogger(entry.loggername).log(entry.level, entry.message);
+ } else {
+ Logger.getLogger(entry.loggername).log(entry.level, entry.message, entry.thrown);
+ }
+ } else {
+ assert entry.loggername == null;
+ if (entry.thrown == null) {
+ entry.logger.log(entry.level, entry.message);
+ } else {
+ entry.logger.log(entry.level, entry.message, entry.thrown);
+ }
+ }
+ }
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+
+ }
+ }
+
+ public static final void configureLogging(final File homePath, final File loggingConfigFile) throws SecurityException, FileNotFoundException, IOException {
+ FileInputStream fileIn = null;
+ try {
+ System.out.println("STARTUP: Trying to load logging configuration from file " + loggingConfigFile.toString());
+ fileIn = new FileInputStream(loggingConfigFile);
+
+ // loading the logger configuration from file
+ final LogManager logManager = LogManager.getLogManager();
+ logManager.readConfiguration(fileIn);
+
+ // creating the logging directory
+ final String logPattern = logManager.getProperty("java.util.logging.FileHandler.pattern");
+ int stripPos = logPattern.lastIndexOf('/');
+ if (stripPos < 0) stripPos = logPattern.lastIndexOf(File.pathSeparatorChar);
+ File log = new File(logPattern.substring(0, stripPos));
+ if (!log.isAbsolute()) log = new File(homePath, log.getPath());
+ if (!log.canRead()) log.mkdir();
+
+ // TODO: changing the pattern settings for the file handlers
+
+ // generating the root logger
+ /*Logger logger =*/ Logger.getLogger("");
+
+// System.setOut(new PrintStream(new LoggerOutputStream(Logger.getLogger("STDOUT"), Level.FINEST)));
+// System.setErr(new PrintStream(new LoggerOutputStream(Logger.getLogger("STDERR"), Level.SEVERE)));
+ logRunnerThread = new logRunner();
+ logRunnerThread.start();
+ } finally {
+ if (fileIn != null) try {fileIn.close();}catch(final Exception e){}
+ }
+ }
+
+ public static void shutdown() {
+ if (logRunnerThread == null || !logRunnerThread.isAlive()) return;
+ try {
+ logQueue.put(poison);
+ logRunnerThread.join(10000);
+ } catch (InterruptedException e) {
+ }
+ }
+
+ public static final String format(final String s, int n, final int fillChar) {
+ final int l = s.length();
+ if (l >= n) return s;
+ final StringBuilder sb = new StringBuilder(l + n);
+ for (final int i = l + n; i > n; n--) sb.insert(0, fillChar);
+ return sb.toString();
+ }
+
+ public static final boolean allZero(final byte[] a) {
+ return allZero(a, 0, a.length);
+ }
+
+ public static final boolean allZero(final byte[] a, final int astart, final int alength) {
+ for (int i = 0; i < alength; i++) if (a[astart + i] != 0) return false;
+ return true;
+ }
+
+}
diff --git a/source/de/anomic/yacy/logging/SimpleLogFormatter.java b/source/de/anomic/yacy/logging/SimpleLogFormatter.java
index f6601e9ba..611949c34 100644
--- a/source/de/anomic/yacy/logging/SimpleLogFormatter.java
+++ b/source/de/anomic/yacy/logging/SimpleLogFormatter.java
@@ -33,7 +33,6 @@ import java.util.Date;
import java.util.logging.LogRecord;
import java.util.logging.SimpleFormatter;
-import de.anomic.kelondro.util.Log;
public class SimpleLogFormatter extends SimpleFormatter {
diff --git a/source/de/anomic/yacy/yacyCore.java b/source/de/anomic/yacy/yacyCore.java
index 4944707cf..25a612fa3 100644
--- a/source/de/anomic/yacy/yacyCore.java
+++ b/source/de/anomic/yacy/yacyCore.java
@@ -53,12 +53,12 @@ import java.util.Map;
import de.anomic.content.RSSMessage;
import de.anomic.kelondro.util.DateFormatter;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.server.serverCore;
import de.anomic.server.serverSemaphore;
import de.anomic.xml.RSSFeed;
import de.anomic.yacy.dht.PeerSelection;
+import de.anomic.yacy.logging.Log;
public class yacyCore {
diff --git a/source/de/anomic/yacy/yacyPeerActions.java b/source/de/anomic/yacy/yacyPeerActions.java
index 7dd0bf70e..e514aa8da 100644
--- a/source/de/anomic/yacy/yacyPeerActions.java
+++ b/source/de/anomic/yacy/yacyPeerActions.java
@@ -29,9 +29,9 @@ import java.util.HashMap;
import de.anomic.content.RSSMessage;
import de.anomic.kelondro.util.DateFormatter;
-import de.anomic.kelondro.util.Log;
import de.anomic.server.serverCodings;
import de.anomic.xml.RSSFeed;
+import de.anomic.yacy.logging.Log;
public class yacyPeerActions {
diff --git a/source/de/anomic/yacy/yacyRelease.java b/source/de/anomic/yacy/yacyRelease.java
index ba6177bd6..57e4db2a7 100644
--- a/source/de/anomic/yacy/yacyRelease.java
+++ b/source/de/anomic/yacy/yacyRelease.java
@@ -51,7 +51,6 @@ import de.anomic.http.httpResponse;
import de.anomic.http.httpResponseHeader;
import de.anomic.http.httpRequestHeader;
import de.anomic.kelondro.order.Base64Order;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.FileUtils;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.server.serverCharBuffer;
@@ -60,6 +59,7 @@ import de.anomic.server.serverSystem;
import de.anomic.tools.CryptoLib;
import de.anomic.tools.SignatureOutputStream;
import de.anomic.tools.tarTools;
+import de.anomic.yacy.logging.Log;
public final class yacyRelease extends yacyVersion {
diff --git a/source/de/anomic/yacy/yacySearch.java b/source/de/anomic/yacy/yacySearch.java
index 235f5f449..fa5c6b525 100644
--- a/source/de/anomic/yacy/yacySearch.java
+++ b/source/de/anomic/yacy/yacySearch.java
@@ -36,11 +36,11 @@ import de.anomic.data.Blacklist;
import de.anomic.kelondro.order.Bitfield;
import de.anomic.kelondro.text.Segment;
import de.anomic.kelondro.util.ScoreCluster;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.plasmaSearchRankingProcess;
import de.anomic.plasma.plasmaSearchRankingProfile;
import de.anomic.search.Query;
import de.anomic.yacy.dht.PeerSelection;
+import de.anomic.yacy.logging.Log;
public class yacySearch extends Thread {
diff --git a/source/de/anomic/yacy/yacySeedDB.java b/source/de/anomic/yacy/yacySeedDB.java
index 63eeceebd..b66e890e7 100644
--- a/source/de/anomic/yacy/yacySeedDB.java
+++ b/source/de/anomic/yacy/yacySeedDB.java
@@ -50,7 +50,6 @@ import de.anomic.kelondro.blob.BLOBHeap;
import de.anomic.kelondro.blob.MapDataMining;
import de.anomic.kelondro.order.Base64Order;
import de.anomic.kelondro.util.kelondroException;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.FileUtils;
import de.anomic.plasma.plasmaHTCache;
import de.anomic.server.serverCore;
@@ -58,6 +57,7 @@ import de.anomic.server.serverDomains;
import de.anomic.server.serverSwitch;
import de.anomic.yacy.dht.PartitionScheme;
import de.anomic.yacy.dht.VerticalWordPartitionScheme;
+import de.anomic.yacy.logging.Log;
public final class yacySeedDB implements httpdAlternativeDomainNames {
diff --git a/source/de/anomic/yacy/yacyVersion.java b/source/de/anomic/yacy/yacyVersion.java
index fbaf7a5d8..9ccbc9be6 100644
--- a/source/de/anomic/yacy/yacyVersion.java
+++ b/source/de/anomic/yacy/yacyVersion.java
@@ -5,8 +5,8 @@ import java.util.Comparator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.plasmaSwitchboard;
+import de.anomic.yacy.logging.Log;
public class yacyVersion implements Comparator, Comparable {
diff --git a/source/de/anomic/ymage/ymageOSM.java b/source/de/anomic/ymage/ymageOSM.java
index 2fbb2d2cc..4dc526b91 100644
--- a/source/de/anomic/ymage/ymageOSM.java
+++ b/source/de/anomic/ymage/ymageOSM.java
@@ -35,11 +35,11 @@ import java.net.MalformedURLException;
import javax.imageio.ImageIO;
-import de.anomic.kelondro.util.Log;
import de.anomic.plasma.plasmaHTCache;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.plasma.parser.Document;
import de.anomic.yacy.yacyURL;
+import de.anomic.yacy.logging.Log;
public class ymageOSM {
diff --git a/source/migration.java b/source/migration.java
index 0dc9011db..6608ff692 100644
--- a/source/migration.java
+++ b/source/migration.java
@@ -26,10 +26,10 @@ import de.anomic.data.listManager;
import de.anomic.http.httpd;
import de.anomic.kelondro.order.Base64Order;
import de.anomic.kelondro.order.Digest;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.FileUtils;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.plasma.plasmaSwitchboardConstants;
+import de.anomic.yacy.logging.Log;
public class migration {
//SVN constants
diff --git a/source/yacy.java b/source/yacy.java
index 57d4536f9..c454d3d2a 100644
--- a/source/yacy.java
+++ b/source/yacy.java
@@ -65,7 +65,6 @@ import de.anomic.kelondro.text.referencePrototype.WordReference;
import de.anomic.kelondro.util.DateFormatter;
import de.anomic.kelondro.util.MemoryControl;
import de.anomic.kelondro.util.ScoreCluster;
-import de.anomic.kelondro.util.Log;
import de.anomic.kelondro.util.FileUtils;
import de.anomic.plasma.plasmaSwitchboard;
import de.anomic.plasma.plasmaSwitchboardConstants;
@@ -81,6 +80,7 @@ import de.anomic.yacy.Tray;
import de.anomic.yacy.yacyURL;
import de.anomic.yacy.yacyRelease;
import de.anomic.yacy.yacyVersion;
+import de.anomic.yacy.logging.Log;
/**
* This is the main class of YaCy. Several threads are started from here: