blob: 72d09c92f0f95a505f29109afca6609266534f00 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="keywords" content="SMILA/Specifications/UsefulLogMessages" />
<link rel="shortcut icon" href="http://wiki.eclipse.org/SMILA/Specifications/favicon.ico" />
<link rel="search" type="application/opensearchdescription+xml" href="http://wiki.eclipse.org/opensearch_desc.php" title="Eclipsepedia (English)" />
<link rel="alternate" type="application/rss+xml" title="Eclipsepedia RSS Feed" href="http://wiki.eclipse.org/index.php?title=Special:Recentchanges&amp;feed=rss" />
<link rel="alternate" type="application/atom+xml" title="Eclipsepedia Atom Feed" href="http://wiki.eclipse.org/index.php?title=Special:Recentchanges&amp;feed=atom" />
<title>SMILA/Specifications/UsefulLogMessages - Eclipsepedia</title>
<style type="text/css" media="screen,projection">/*<![CDATA[*/ @import "http://wiki.eclipse.org/skins/eclipsenova/novaWide.css?116"; /*]]>*/</style>
<link rel="stylesheet" type="text/css" media="print" href="http://wiki.eclipse.org/skins/eclipsenova/eclipsenovaPrint.css?116" />
<link rel="stylesheet" type="text/css" media="handheld" href="http://wiki.eclipse.org/skins/eclipsenova/handheld.css?116" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/header.css" media="screen" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/tabs.css" media="screen" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/visual.css" media="screen" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/layout.css" media="screen" />
<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/footer.css" media="screen" />
<!--[if IE]><link rel="stylesheet" type="text/css" href="/skins/eclipsenova/IEpngfix.css" media="screen" /><![endif]-->
<!--[if lt IE 5.5000]><style type="text/css">@import "/skins/eclipsenova/IE50Fixes.css?116";</style> <![endif]-->
<!--[if IE 5.5000]><style type="text/css">@import "/skins/eclipsenova/IE55Fixes.css?116";</style><![endif]-->
<!--[if IE 6]><style type="text/css">@import "/skins/eclipsenova/IE60Fixes.css?116";</style><![endif]-->
<!--[if IE 7]><style type="text/css">@import "/skins/eclipsenova/IE70Fixes.css?116";</style><![endif]-->
<!--[if lt IE 7]><script type="text/javascript" src="/skins/common/IEFixes.js?116"></script>
<meta http-equiv="imagetoolbar" content="no" /><![endif]-->
<script type= "text/javascript">/*<![CDATA[*/
var skin = "eclipsenova";
var stylepath = "/skins";
var wgArticlePath = "/$1";
var wgScriptPath = "";
var wgScript = "/index.php";
var wgServer = "http://wiki.eclipse.org";
var wgCanonicalNamespace = "";
var wgCanonicalSpecialPageName = false;
var wgNamespaceNumber = 0;
var wgPageName = "SMILA/Specifications/UsefulLogMessages";
var wgTitle = "SMILA/Specifications/UsefulLogMessages";
var wgAction = "view";
var wgRestrictionEdit = [];
var wgRestrictionMove = [];
var wgArticleId = "16124";
var wgIsArticle = true;
var wgUserName = null;
var wgUserGroups = null;
var wgUserLanguage = "en";
var wgContentLanguage = "en";
var wgBreakFrames = false;
var wgCurRevisionId = "128924";
var wgVersion = "1.12.0";
var wgEnableAPI = true;
var wgEnableWriteAPI = false;
/*]]>*/</script>
<script type="text/javascript" src="http://wiki.eclipse.org/skins/common/wikibits.js?116"><!-- wikibits js --></script>
<!-- Performance mods similar to those for bug 166401 -->
<script type="text/javascript" src="http://wiki.eclipse.org/index.php?title=-&amp;action=raw&amp;gen=js&amp;useskin=eclipsenova"><!-- site js --></script>
<!-- Head Scripts -->
<script type="text/javascript" src="http://wiki.eclipse.org/skins/common/ajax.js?116"></script>
<style type="text/css">/*<![CDATA[*/
.source-java {line-height: normal; font-size: medium;}
.source-java li {line-height: normal;}
/**
* GeSHi Dynamically Generated Stylesheet
* --------------------------------------
* Dynamically generated stylesheet for java
* CSS class: source-java, CSS id:
* GeSHi (C) 2004 - 2007 Nigel McNie (http://qbnz.com/highlighter)
*/
.source-java .de1, .source-java .de2 {font-family: 'Courier New', Courier, monospace; font-weight: normal;}
.source-java {}
.source-java .head {}
.source-java .foot {}
.source-java .imp {font-weight: bold; color: red;}
.source-java .ln-xtra {color: #cc0; background-color: #ffc;}
.source-java li {font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;}
.source-java li.li2 {font-weight: bold;}
.source-java .kw1 {color: #7F0055; font-weight: bold;}
.source-java .kw2 {color: #7F0055; font-weight: bold;}
.source-java .kw3 {color: #000000; font-weight: normal}
.source-java .kw4 {color: #7F0055; font-weight: bold;}
.source-java .co1 {color: #3F7F5F; font-style: italic;}
.source-java .co2 {color: #3F7F5F;}
.source-java .co3 {color: #3F7F5F; font-style: italic; font-weight: bold;}
.source-java .coMULTI {color: #3F5FBF; font-style: italic;}
.source-java .es0 {color: #000000;}
.source-java .br0 {color: #000000;}
.source-java .st0 {color: #2A00ff;}
.source-java .nu0 {color: #000000;}
.source-java .me1 {color: #000000;}
.source-java .me2 {color: #000000;}
/*]]>*/
</style>
<style type="text/css">/*<![CDATA[*/
@import "http://wiki.eclipse.org/index.php?title=MediaWiki:Geshi.css&usemsgcache=yes&action=raw&ctype=text/css&smaxage=18000";
/*]]>*/
</style><style type="text/css">/*<![CDATA[*/
.source-xml {line-height: normal; font-size: medium;}
.source-xml li {line-height: normal;}
/**
* GeSHi Dynamically Generated Stylesheet
* --------------------------------------
* Dynamically generated stylesheet for xml
* CSS class: source-xml, CSS id:
* GeSHi (C) 2004 - 2007 Nigel McNie (http://qbnz.com/highlighter)
*/
.source-xml .de1, .source-xml .de2 {font-family: 'Courier New', Courier, monospace; font-weight: normal;}
.source-xml {}
.source-xml .head {}
.source-xml .foot {}
.source-xml .imp {font-weight: bold; color: red;}
.source-xml .ln-xtra {color: #cc0; background-color: #ffc;}
.source-xml li {font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;}
.source-xml li.li2 {font-weight: bold;}
.source-xml .coMULTI {color: #808080; font-style: italic;}
.source-xml .es0 {color: #000099; font-weight: bold;}
.source-xml .br0 {color: #66cc66;}
.source-xml .st0 {color: #ff0000;}
.source-xml .nu0 {color: #cc66cc;}
.source-xml .sc0 {color: #00bbdd;}
.source-xml .sc1 {color: #ddbb00;}
.source-xml .sc2 {color: #339933;}
.source-xml .sc3 {color: #009900;}
.source-xml .re0 {color: #000066;}
.source-xml .re1 {font-weight: bold; color: black;}
.source-xml .re2 {font-weight: bold; color: black;}
/*]]>*/
</style>
<style type="text/css">/*<![CDATA[*/
@import "http://wiki.eclipse.org/index.php?title=MediaWiki:Geshi.css&usemsgcache=yes&action=raw&ctype=text/css&smaxage=18000";
/*]]>*/
</style><link rel="stylesheet" type="text/css" href="UsefulLogMessages.html" /> </head>
<body class="mediawiki ns-0 ltr page-SMILA_Specifications_UsefulLogMessages">
<div id="globalWrapper">
<div id="column-one">
<!-- Eclipse Additions for the Top Nav start here M. Ward-->
<div id="header">
<div id="header-graphic">
<img src="http://wiki.eclipse.org/skins/eclipsenova/eclipse.png" alt="Eclipse Wiki">
</div>
<!-- Pulled 101409 Mward -->
<div class="portlet" id="p-personal">
<div class="pBody">
<ul>
<li id="pt-login"><a href="http://wiki.eclipse.org/index.php?title=Special:Userlogin&amp;returnto=SMILA/Specifications/UsefulLogMessages">Log in</a></li>
</ul>
</div>
</div>
<div id="header-icons">
<div id="sites">
<ul id="sitesUL">
<li><a href="http://www.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/eclipseIcon.png" width="28" height="28" alt="Eclipse Foundation" title="Eclipse Foundation" /><div>Eclipse Foundation</div></a></li>
<li><a href="http://marketplace.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/marketplace.png" width="28" height="28" alt="Eclipse Marketplace" title="Eclipse Marketplace" /><div>Eclipse Marketplace</div></a></li>
<li><a href="https://bugs.eclipse.org/bugs"><img src="http://dev.eclipse.org/custom_icons/system-search-bw.png" width="28" height="28" alt="Bugzilla" title="Bugzilla" /><div>Bugzilla</div></a></li>
<li><a href="http://live.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/audio-input-microphone-bw.png" width="28" height="28" alt="Live" title="Live" /><div>Eclipse Live</div></a></li>
<li><a href="http://planeteclipse.org"><img src="http://dev.eclipse.org/large_icons/devices/audio-card.png" width="28" height="28" alt="PlanetEclipse" title="Planet" /><div>Planet Eclipse</div></a></li>
<li><a href="http://portal.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/preferences-system-network-proxy-bw.png" width="28" height="28" alt="Portal" title="Portal" /><div>My Foundation Portal</div></a></li>
</ul>
</div>
</div>
</div>
<!-- NEW HEADER STUFF HERE -->
<div id="header-menu">
<div id="header-nav">
<ul> <li><a class="first_one" href="http://wiki.eclipse.org/" target="_self">Home</a></li> <li><a href="http://www.eclipse.org/downloads/" target="_self">Downloads</a></li>
<li><a href="http://www.eclipse.org/users/" target="_self">Users</a></li>
<li><a href="http://www.eclipse.org/membership/" target="_self">Members</a></li>
<li><a href="http://wiki.eclipse.org/index.php/Development_Resources" target="_self">Committers</a></li>
<li><a href="http://www.eclipse.org/resources/" target="_self">Resources</a></li>
<li><a href="http://www.eclipse.org/projects/" target="_self">Projects</a></li>
<li><a href="http://www.eclipse.org/org/" target="_self">About Us</a></li>
</ul>
</div>
<div id="header-utils">
<!-- moved the search window here -->
<form action="http://wiki.eclipse.org/Special:Search" >
<input class="input" name="search" type="text" accesskey="f" value="" />
<input type='submit' onclick="this.submit();" name="go" id="searchGoButton" class="button" title="Go to a page with this exact name if one exists" value="Go" />&nbsp;
<input type='submit' onclick="this.submit();" name="fulltext" class="button" id="mw-searchButton" title="Search Eclipsepedia for this text" value="Search" />
</form>
</div>
</div>
<!-- Eclipse Additions for the Header stop here -->
<!-- Additions and mods for leftside nav Start here -->
<!--Started nav rip here-->
<!-- these are the nav controls main page, changes etc -->
<div id="novaContent" class="faux">
<div id="leftcol">
<ul id="leftnav">
<!-- these are the page controls, edit history etc -->
<li class="separator"><a class="separator">Navigation &#160;&#160;</li>
<li id="n-mainpage"><a href="http://wiki.eclipse.org/Main_Page">Main Page</a></li>
<li id="n-portal"><a href="http://wiki.eclipse.org/Eclipsepedia:Community_Portal">Community portal</a></li>
<li id="n-currentevents"><a href="http://wiki.eclipse.org/Eclipsepedia:Current_events">Current events</a></li>
<li id="n-recentchanges"><a href="http://wiki.eclipse.org/Special:Recentchanges">Recent changes</a></li>
<li id="n-randompage"><a href="http://wiki.eclipse.org/Special:Random">Random page</a></li>
<li id="n-help"><a href="http://wiki.eclipse.org/Help:Contents">Help</a></li>
<li class="separator"><a class="separator">Toolbox &#160;&#160;</a></li>
<li id="t-whatlinkshere"><a href="http://wiki.eclipse.org/Special:Whatlinkshere/SMILA/Specifications/UsefulLogMessages">What links here</a></li>
<li id="t-recentchangeslinked"><a href="http://wiki.eclipse.org/Special:Recentchangeslinked/SMILA/Specifications/UsefulLogMessages">Related changes</a></li>
<!-- This is the toolbox section -->
<li id="t-upload"><a href="http://wiki.eclipse.org/Special:Upload">Upload file</a></li>
<li id="t-specialpages"><a href="http://wiki.eclipse.org/Special:Specialpages">Special pages</a></li>
<li id="t-print"><a href="http://wiki.eclipse.org/index.php?title=SMILA/Specifications/UsefulLogMessages&amp;printable=yes">Printable version</a></li> <li id="t-permalink"><a href="http://wiki.eclipse.org/index.php?title=SMILA/Specifications/UsefulLogMessages&amp;oldid=128924">Permanent link</a></li> </ul>
</div>
<!-- Additions and mods for leftside nav End here -->
<div id="column-content">
<div id="content">
<a name="top" id="top"></a>
<div id="tabs">
<ul class="primary">
<li class="active"><a href="UsefulLogMessages.html"><span class="tab">Page</span></a></li>
<li><a href="http://wiki.eclipse.org/index.php?title=Talk:SMILA/Specifications/UsefulLogMessages&amp;action=edit"><span class="tab">Discussion</span></a></li>
<li><a href="http://wiki.eclipse.org/index.php?title=SMILA/Specifications/UsefulLogMessages&amp;action=edit"><span class="tab">View source</span></a></li>
<li><a href="http://wiki.eclipse.org/index.php?title=SMILA/Specifications/UsefulLogMessages&amp;action=history"><span class="tab">History</span></a></li>
<li><a href="http://wiki.eclipse.org/index.php?title=Special:Userlogin&amp;returnto=SMILA/Specifications/UsefulLogMessages"><span class="tab">Edit</span></a></li>
</ul>
</div>
<script type="text/javascript"> if (window.isMSIE55) fixalpha(); </script>
<h1 class="firstHeading">SMILA/Specifications/UsefulLogMessages</h1>
<div id="bodyContent">
<h3 id="siteSub">From Eclipsepedia</h3>
<div id="contentSub"><span class="subpages">&lt; <a href="../../SMILA.html" title="SMILA">SMILA</a> | <a href="../Specifications.1.html" title="SMILA/Specifications">Specifications</a></span></div>
<div id="jump-to-nav">Jump to: <a href="UsefulLogMessages.html#column-one">navigation</a>, <a href="UsefulLogMessages.html#searchInput">search</a></div> <!-- start content -->
<p><a href="http://logging.apache.org/log4j/" class="external text" title="http://logging.apache.org/log4j/" rel="nofollow">Apache log4j</a> is the open source logging tool developed under the Jakarta Apache project. It is a set of APIs that allows developers to write log statements in their code and configure them externally, using properties files.
Logging (e.g., in a.log file or in a SQL data bank) is a big help during the development time as well as later to the errors search with the customer. It is used primarily as a debugging tool.
Smila is using a <a href="http://logging.apache.org/log4j/" class="external text" title="http://logging.apache.org/log4j/" rel="nofollow">Apache log4j</a>.
</p>
<table id="toc" class="toc" summary="Contents"><tr><td><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1"><a href="UsefulLogMessages.html#Current_Problems"><span class="tocnumber">1</span> <span class="toctext">Current Problems</span></a></li>
<li class="toclevel-1"><a href="UsefulLogMessages.html#Discussion"><span class="tocnumber">2</span> <span class="toctext">Discussion</span></a></li>
<li class="toclevel-1"><a href="UsefulLogMessages.html#Log_in_the_future"><span class="tocnumber">3</span> <span class="toctext">Log in the future</span></a>
<ul>
<li class="toclevel-2"><a href="UsefulLogMessages.html#To_change_the_default_logging_settings"><span class="tocnumber">3.1</span> <span class="toctext">To change the default logging settings</span></a>
<ul>
<li class="toclevel-3"><a href="UsefulLogMessages.html#The_possible_configuration_log4j.properties_for_Smila"><span class="tocnumber">3.1.1</span> <span class="toctext">The possible configuration log4j.properties for Smila</span></a></li>
</ul>
</li>
<li class="toclevel-2"><a href="UsefulLogMessages.html#To_switch_the_log_level_for_messages"><span class="tocnumber">3.2</span> <span class="toctext">To switch the log level for messages</span></a></li>
<li class="toclevel-2"><a href="UsefulLogMessages.html#To_write_down_a_guidelines_for_developers"><span class="tocnumber">3.3</span> <span class="toctext">To write down a guidelines for developers</span></a></li>
<li class="toclevel-2"><a href="UsefulLogMessages.html#To_output_a_logging_information_in_the_different_files"><span class="tocnumber">3.4</span> <span class="toctext">To output a logging information in the different files</span></a></li>
<li class="toclevel-2"><a href="UsefulLogMessages.html#Additional_logging:_Records_lifecycle_information"><span class="tocnumber">3.5</span> <span class="toctext">Additional logging: Records lifecycle information</span></a></li>
</ul>
</li>
<li class="toclevel-1"><a href="UsefulLogMessages.html#Links"><span class="tocnumber">4</span> <span class="toctext">Links</span></a></li>
</ul>
</li>
</ul>
</td></tr></table><script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
<a name="Current_Problems"></a><h2> <span class="mw-headline">Current Problems</span></h2>
<ul><li> <b>Too much Information in the log</b>
</li></ul>
<p>File EILF.log where registers a log information for Smila contains too much not the helpful information. Most of all messages arrive from debug. For example, at indexation of file EILF logging file has 33 000 lines, the majority from which an extracted context. To search for the necessary information is not so conveniently. For example, at indexation of file EILF (for xml files) EILF.log has 33 000 lines, the majority from which an extracted context. Today it is easy to get lost and not to find the necessary records in a pack of messages. The surplus information litters the log.
</p>
<ul><li> <b>Messages do not correspond to the level</b>
</li></ul>
<p>From <a href="http://logging.apache.org/log4j/1.2/manual.html" class="external text" title="http://logging.apache.org/log4j/1.2/manual.html" rel="nofollow">Short introduction to log4j</a>: INFO - for the "high level" information; DEBUG - only for the software developer interesting messages. Now in INFO is written too much information for developer.
</p><p>For example this information is written down in INFO. Isn't that so here approaches DEBUG more?
</p><p><i>- AddPipeline/extensionActivity-activity-line-36: found service MimeTypeIdentifier, processing request -&gt; request</i>
</p><p><i>- AddPipeline/extensionActivity-activity-line-50: found service LuceneIndexService, processing request -&gt; request</i>
</p><p><i>- AddPipeline/extensionActivity-activity-line-43: no pipelet configuration found.</i>
</p><p><i>- AddPipeline/extensionActivity-activity-line-43: found pipelet org.eclipse.eilf.processing.pipelets.aperture.AperturePipelet, processing request -&gt; request</i>
</p><p><i>- DeletePipeline/extensionActivity-activity-line-36: found service LuceneIndexService, processing request -&gt; request</i>
</p><p><i>- Initialization of BPEL engine successful</i>
</p><p><br />
</p>
<ul><li> <b>Insufficiently informative messages of info level</b>
</li></ul>
<p>This point is connected with the previous.
</p>
<a name="Discussion"></a><h2> <span class="mw-headline">Discussion</span></h2>
<p><i>Sebastian Voigt</i>: My Suggestion is to change the default logging settings to minimize logging information. (Question is more, what do we have to see (ODE logging messages is an example).
We have to see errors messages thrown by the components, but we don't want to see every message from ode etc...
</p><p><i>Jürgen Schumacher</i>: From a quick look at a quite old EILF.log on my machine, I think it should be sufficient to switch the log level for org.eclipse.eilf from DEBUG to INFO. Or am I getting anything wrong?
</p><p><i>Thomas Menzel:</i> My opinion on this:
</p><p>1. logging is there to help you, too much just doesn't.
</p><p>2. have INFO level to show where the process/program is roughly. if u have loops that are executed often or have many iterations than I think it is a good choice to just log every N iterations.
the overhead for this is minimal and the output a welcome indicator for anybody concerned about the progress and speed of a process/loop.
</p><p>3. DEBUG: give verbose info that is needed for debugging purposes. that includes most important the state of the process and involved objects
</p><p><i>Allan Kaufmann:</i> I think it could be helpful if users received errors and if log error gives important information but not too much. Currently the EILF.log shows much, so that exceptions and error like this could be overlooked.
</p><p><i>Sofya Zhbankova:</i> and that if to separate a logging information in the different files: debugging messages to one file (EILF.debug) and other messages to another file (EILF.log). Most of all messages arrive from debug . It seems to me that it is possible few to "unload" debug. For example, whether it is necessary to deduce in the file an extracted content.
</p><p>For example, at indexation of file EILF (for xml files) EILF.log has 33 000 lines, the majority from which an extracted context. To search for the necessary information is not so conveniently.
</p><p><i>Allan Kaufmann:</i> In my opinion we should keep EILF.log as one log file that hold all logs of the different levels in order of the runtime, because while searching for information it´s difficult to look and sort with different log files. But maybe it could be helpful to received EILF.debug or EILF.error as additional file?
Sample: Our Logger is set to DEBUG, so EILF.log received all Logs until DEBUG-level. But if a developer just wants information about errors, he could have a look to EILF.error.
Disadvantage: More performance because information could log more than one time.
If we choose the idea to separate the log in different files without a main file like EILF.log or otherwise, it´s necessary to design the log clearly, so that information could be found better and messages are more helpfully.
</p><p><i>Ivan Churkin:</i> As you already mentioned, the order of the runtime will be lost, so system have to support complete log file.
Additional log files may be added but I'm not sure that its info will be enough.
bwt, for example, GREP may be used for investigating/filtering log file.
</p><p><i>Daniel Stucky:</i> I agree with Allan to keep one log file.
I think we should set up some guidelines for developers when and what to log on which level to provide meaningful log entries.
</p><p>Then it's only a matter of configuration
- we should provide a default log4j configuration for development (e.g. log level DEBUG)
- we should provide a default log4j configuration for the application (e.g. log level INFO)
</p><p>Everybody is free to change log4j settings in his/her development or application environment if those defaults don't fit.
</p><p><i>Sofya Zhbankova</i>: I agree with Daniel that "..everybody is free to change log4j settings..". For me to search in separate files it is much easier.
Today it is easy to get lost and not to find the necessary records in a pack of messages. The surplus information litters the log.
Can be all the technical information to write down in debug and in info - only final and short messages:
</p><p>- Initializing Crawler...
</p><p>- some documents are processed and stored into the index
</p><p><i>Daniel Stucky:</i> I added a section "Logging guidelines" to our Development_Guidelines:
[<a href="../Development_Guidelines.1.html#Logging_guidelines" class="external autonumber" title="http://wiki.eclipse.org/SMILA/Development_Guidelines#Logging_guidelines" rel="nofollow">[1]</a>]. Feel free to comment or improve.
</p><p><i>Sofya Zhbankova:</i> From general:
INFO - for the "high level" information; DEBUG - only for the software developer interesting messages.
I think that for Smila reasonably too.
</p><p><i>Thomas Menzel:</i> I have some remark to:
</p>
<ul><li> log exceptions before throwing new exceptions, e.g.
</li></ul>
<p>...
if( paramXY == null ) {
</p>
<pre> if (_log.isErrorEnabled()) {
_log.error("paramXY is not set");
}
throw new NullPointerException("paramXY is not set"); } ////
</pre>
<p><br />
I advise against this as it only causes the same message to be repeated at least twice, namely when the exception is created and then when the exception is logged itself.
IMO it is sufficient to have a verbose error msg and this then is reported along with the stack trace when the exception is logged.
if the exception is handled then this message is even confusing b/c u have ERROR log entry but wonder: what happened then?
if u deem the condition so extraordinary and dangerous we could log it as warning, but since we don’t log the exception here it should not be level ERROR.
</p><p>even worse than this is sometimes the habit to log an exception before (re)throwing or wrapping it, which I have seen as often (in general, not this project in particular).
this then has the effect that u have the same exception logged several times which makes the log very verbose and confusing. as u think u have lot of problems/exception when it fact it is only that one case.
</p><p>of course this only applies when u remain within our own system bounds. if u write a library that is called from other code then it is wise to log the exception at ur system boundary, i.e. the method that was called by the client, that might not adhere to sound logging standards.
again, there are also pitfalls with this convention, e.g. in case of an overloaded API method where u have a simple version that delegates to a more verbose other API method that also could be called from a client.
</p>
<a name="Log_in_the_future"></a><h2> <span class="mw-headline">Log in the future</span></h2>
<p>How to improve a log for Smila and what will be a log in the future?
</p><p>The basic ideas stated by developers ware:
</p>
<a name="To_change_the_default_logging_settings"></a><h3> <span class="mw-headline">To change the default logging settings</span></h3>
<p>The Smila is configured through a property file - <i>log4j.properties</i>. Configuring log4j typically involves assigning <i>Logger</i>, defining <i>Appender</i>, and specifying <i>Layout</i> objects. A logger logs to an appender in a particular layout (style).
Loggers need to know where to send your requests for logging. This is where the <i>appenders</i> come into picture. log4j supports writing to files (FileAppender), to console (ConsoleAppender), to databases (JDBCAppender), to NT event logs (NTEventLogAppender), to SMTP servers (SMTPAppender), to remote servers (SocketAppender), and others.
</p><p>A <i>layout</i> defines the style and content of the output log.
</p><p>Each logger in log4j is assigned a level (DEBUG, INFO, WARN, ERROR, FATAL).
</p><p><a href="http://jakarta.apache.org/log4j/docs/api/org/apache/log4j/PatternLayout.html" class="external text" title="http://jakarta.apache.org/log4j/docs/api/org/apache/log4j/PatternLayout.html" rel="nofollow">PatternLayout</a> lets you specify the output format according to conversion patterns similar to the C language printf function.
</p><p><br />
</p>
<a name="The_possible_configuration_log4j.properties_for_Smila"></a><h4> <span class="mw-headline">The possible configuration <i>log4j.properties</i> for Smila</span></h4>
<p>PatternLayout with the conversion pattern <b>%x&nbsp;%d{ISO8601};&nbsp;%-5p; [%-45t]&nbsp;;&nbsp;%-45c{2}&nbsp;; &nbsp;%m%n</b> will output something like:
</p>
<div dir="ltr" style="text-align: left;"><pre class="source-java"><span class="nu0">2008</span><span class="nu0">-10</span><span class="nu0">-01</span> <span class="nu0">15</span>:<span class="nu0">34</span>:<span class="nu0">21</span>,<span class="nu0">283</span>; INFO&nbsp;; <span class="br0">&#91;</span>Start Level <span class="kw3">Event</span> Dispatcher <span class="br0">&#93;</span>&nbsp;; workspace.<span class="me1">WorkspaceHelper</span> &nbsp;; Using <span class="kw1">default</span> workspace.</pre></div>
<p>File columns are separated by semicolons (.csv file, can be worked on directly, e.g., in Excel) and&nbsp;:
</p>
<ul><li>%x - is the nested diagnostic context (NDC) associated with the thread that generated the logging event. Useful when multiple clients are handled by separate threads such as in Java servlets.
</li><li>%d{ISO8601} - is the time.
</li><li>%-5p - is the priority of the log statement.
</li><li>[%-45t] - is the thread making the log request.
</li><li>%-45c{2} - is the name of the class associated with the log request.
</li><li>%m%n - is the message of the statement with new line.
</li></ul>
<p>Use a appender to log to a file.
Let's set default level DEBUG for package org.eclipse.eilf. For some classes which give much debug messages we reduce level to info.
</p><p><b>Let's consider some interesting options of FileAppender:</b>
</p>
<ul><li>FileAppender Option <i>Threshold</i> is useful to cut down the number of messages.
</li></ul>
<p>For example:
</p>
<div dir="ltr" style="text-align: left;"><pre class="source-java">log4j.<span class="me1">appender</span>.<span class="me1">file</span>.<span class="me1">threshold</span>=INFO</pre></div> Appender will not log any messages with priority lower than INFO even if the category's priority is set DEBUG.
<ul><li>Append=false: Default is true which means append to the end of the file. false overwrites the file at the start of each program run.
</li></ul>
<div dir="ltr" style="text-align: left;"><pre class="source-java"># The file overwrites at the start of each program run.
<span class="me1">log4j</span>.<span class="me1">appender</span>.<span class="me1">file</span>.<span class="me1">append</span>=<span class="kw2">false</span></pre></div>
<p><br />
<i>log4j.properties</i> for Smila:
</p>
<div dir="ltr" style="text-align: left;"><pre class="source-java"># <span class="kw3">Set</span> root logger level to INFO and its only appender to file.
# Print only messages of priority INFO or higher.
&nbsp;
<span class="me1">log4j</span>.<span class="me1">rootLogger</span>=INFO, file
&nbsp;
# The appenders should not be accumulated from ancestors
log4j.<span class="me1">additivity</span>.<span class="me1">org</span>.<span class="me1">eclipse</span>.<span class="me1">eilf</span>=<span class="kw2">false</span>
&nbsp;
# A appender writes to a file EILF.<span class="me1">log</span>
log4j.<span class="me1">appender</span>.<span class="me1">file</span> = org.<span class="me1">apache</span>.<span class="me1">log4j</span>.<span class="me1">FileAppender</span>
log4j.<span class="me1">appender</span>.<span class="me1">file</span>.<span class="kw3">File</span> = EILF.<span class="me1">log</span>
log4j.<span class="me1">appender</span>.<span class="me1">file</span>.<span class="me1">layout</span> = org.<span class="me1">apache</span>.<span class="me1">log4j</span>.<span class="me1">PatternLayout</span>
&nbsp;
# The file overwrites at the start of each program run.
<span class="me1">log4j</span>.<span class="me1">appender</span>.<span class="me1">file</span>.<span class="me1">append</span>=<span class="kw2">false</span>
&nbsp;
# Pattern to output in the file: <span class="br0">&#123;</span>d<span class="br0">&#125;</span> time <span class="br0">&#123;</span>p<span class="br0">&#125;</span> level <span class="br0">&#123;</span>t<span class="br0">&#125;</span> thread name <span class="br0">&#123;</span>c<span class="br0">&#125;</span> <span class="kw1">class</span> name <span class="br0">&#123;</span>m<span class="br0">&#125;</span> message
log4j.<span class="me1">appender</span>.<span class="me1">file</span>.<span class="me1">layout</span>.<span class="me1">ConversionPattern</span>=%x&nbsp;%d<span class="br0">&#123;</span>ISO8601<span class="br0">&#125;</span>;&nbsp;%-5p; <span class="br0">&#91;</span>%-45t<span class="br0">&#93;</span>&nbsp;;&nbsp;%-45c<span class="br0">&#123;</span><span class="nu0">2</span><span class="br0">&#125;</span>&nbsp;; &nbsp;%m%n
&nbsp;
# <span class="kw1">default</span> logger <span class="kw1">for</span> <span class="kw1">package</span> org.<span class="me1">eclipse</span>.<span class="me1">eilf</span>
log4j.<span class="me1">logger</span>.<span class="me1">org</span>.<span class="me1">eclipse</span>.<span class="me1">eilf</span>=DEBUG, file
&nbsp;
# Extention <span class="kw1">default</span> logger <span class="kw1">for</span> classes
# Print only messages of priority ERROR or higher <span class="kw1">for</span> these classes.
&nbsp;
<span class="me1">log4j</span>.<span class="me1">logger</span>.<span class="me1">org</span>.<span class="me1">eclipse</span>.<span class="me1">eilf</span>.<span class="me1">processing</span>=ERROR, file
log4j.<span class="me1">logger</span>.<span class="me1">org</span>.<span class="me1">eclipse</span>.<span class="me1">eilf</span>.<span class="me1">processing</span>.<span class="me1">bpel</span>=ERROR, file
log4j.<span class="me1">logger</span>.<span class="me1">org</span>.<span class="me1">eclipse</span>.<span class="me1">eilf</span>.<span class="me1">binstorage</span>=ERROR, file
log4j.<span class="me1">logger</span>.<span class="me1">org</span>.<span class="me1">eclipse</span>.<span class="me1">eilf</span>.<span class="me1">blackboard</span>=ERROR, file
log4j.<span class="me1">logger</span>.<span class="me1">org</span>.<span class="me1">eclipse</span>.<span class="me1">eilf</span>.<span class="me1">xmlstorage</span>=ERROR, file
log4j.<span class="me1">logger</span>.<span class="me1">org</span>.<span class="me1">eclipse</span>.<span class="me1">eilf</span>.<span class="me1">connectivity</span>.<span class="me1">deltaindexing</span>= ERROR, file
log4j.<span class="me1">logger</span>.<span class="me1">org</span>.<span class="me1">eclipse</span>.<span class="me1">eilf</span>.<span class="me1">connectivity</span>.<span class="me1">queue</span>.<span class="me1">worker</span>=ERROR, file
log4j.<span class="me1">logger</span>.<span class="me1">org</span>.<span class="me1">apache</span>.<span class="me1">ode</span>.<span class="me1">ODEServer</span>=ERROR, file</pre></div>
<a name="To_switch_the_log_level_for_messages"></a><h3> <span class="mw-headline">To switch the log level for messages</span></h3>
<p>The point especially concerns INFO and DEBUG levels. I think we should adhere to the general rules of use of levels:
</p><p><b>INFO</b> - Interesting runtime events (startup/shutdown). Expect these to be immediately visible on a console, so be conservative and keep to a minimum.
</p><p><b>DEBUG</b> - detailed information on the flow through the system. Expect these to be written to developers only.
</p><p>( See <a href="http://logging.apache.org/log4j/1.2/apidocs/index.html" class="external text" title="http://logging.apache.org/log4j/1.2/apidocs/index.html" rel="nofollow">log4j javadocs</a>:
The <b>DEBUG</b> Level designates fine-grained informational events that are most useful to debug an application.
The <b>INFO</b> level designates informational messages that highlight the progress of the application at coarse-grained level. )
</p><p>Really, it would be desirable to receive "easier" information in INFO.
Like as:
</p><p><i>- Smila started successfully</i>
</p><p><i>- indexing file system AAA starting</i>
</p><p><i>- folder for (xml, txt, html)</i>
</p><p><i>- file A indexing successfully - updated</i>
</p><p><i>- file B indexing successfully - touched</i>
</p><p><i>- file C indexing successfully - deleted</i>
</p><p>...
<i>- Total indexing 421 files</i>
</p><p><i>- touched 400 files</i>
</p><p><i>- updated 10 files</i>
</p><p><i>- deleted 11 files</i>
</p><p><i>- indexing time 8909 ms</i>
</p><p><br />
</p>
<a name="To_write_down_a_guidelines_for_developers"></a><h3> <span class="mw-headline">To write down a guidelines for developers</span></h3>
<p>One of results of the discussion is occurrence a section <a href="../Development_Guidelines.1.html#Logging_guidelines" class="external text" title="http://wiki.eclipse.org/SMILA/Development_Guidelines#Logging_guidelines" rel="nofollow">"Logging guidelines"</a>.
</p>
<a name="To_output_a_logging_information_in_the_different_files"></a><h3> <span class="mw-headline">To output a logging information in the different files</span></h3>
<p>Though this idea has not found support in developers, the debugging data recording in a separate file can be accepted also.
</p><p>If you want to output logging information in different files it should be helpful to write a <b>xml-configuration-file</b>. In this way it is possible to define two or more different appender for the same logger. By using a <b>LevelRangeFilter</b> (which is only supported in xml) you could specify an own log level for every appender.
</p><p>In this example two FileAppender were used. The first FileAppender (DebugFileAppenter) only log messages of the DEBUG level and the second FileAppender (OtherFileAppender) log all messages of more interesting level (INFO – FATAL)
</p><p>After defining the appender with layout, filter and other parameter (maybe filename for FileAppender) it is necessary to reference the appender to the logger (here: RootLogger) at the end of the configuration file.
</p>
<div dir="ltr" style="text-align: left;"><pre class="source-xml"><span class="sc3"><span class="re1">&lt;?xml</span> <span class="re0">version</span>=<span class="st0">&quot;1.0&quot;</span> <span class="re0">encoding</span>=<span class="st0">&quot;UTF-8&quot;</span> <span class="re2">?&gt;</span></span>
<span class="sc0">&lt;!DOCTYPE log4j:configuration SYSTEM &quot;log4j.dtd&quot;&gt;</span>
<span class="sc3"><span class="re1">&lt;log4j:configuration<span class="re2">&gt;</span></span></span>
&nbsp;
<span class="sc3"><span class="coMULTI">&lt;!--define first appender--&gt;</span></span>
<span class="sc3"><span class="re1">&lt;appender</span> <span class="re0">name</span>=<span class="st0">&quot;DebugFileAppender&quot;</span> <span class="re0">class</span>=<span class="st0">&quot;org.apache.log4j.FileAppender&quot;</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="coMULTI">&lt;!--specify the output file--&gt;</span></span>
<span class="sc3"><span class="re1">&lt;param</span> <span class="re0">name</span>=<span class="st0">&quot;file&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;debugLogFile.log&quot;</span><span class="re2">/&gt;</span></span>
<span class="sc3"><span class="coMULTI">&lt;!--define a layout--&gt;</span></span>
<span class="sc3"><span class="re1">&lt;layout</span> <span class="re0">class</span>=<span class="st0">&quot;org.apache.log4j.PatternLayout&quot;</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;param</span> <span class="re0">name</span>=<span class="st0">&quot;ConversionPattern&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;%d{dd MMM yyyy HH:mm:ss} -&nbsp;%p -&nbsp;%m - @%l&nbsp;%n&quot;</span><span class="re2">/&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/layout<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="coMULTI">&lt;!--set a filter--&gt;</span></span>
<span class="sc3"><span class="re1">&lt;filter</span> <span class="re0">class</span>=<span class="st0">&quot;org.apache.log4j.varia.LevelRangeFilter&quot;</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;param</span> <span class="re0">name</span>=<span class="st0">&quot;LevelMin&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;DEBUG&quot;</span><span class="re2">/&gt;</span></span>
<span class="sc3"><span class="re1">&lt;param</span> <span class="re0">name</span>=<span class="st0">&quot;LevelMax&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;DEBUG&quot;</span><span class="re2">/&gt;</span></span>
<span class="sc3"><span class="re1">&lt;param</span> <span class="re0">name</span>=<span class="st0">&quot;AcceptOnMatch&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;true&quot;</span><span class="re2">/&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/filter<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;/appender<span class="re2">&gt;</span></span></span>
&nbsp;
<span class="sc3"><span class="coMULTI">&lt;!--define second appender--&gt;</span></span>
<span class="sc3"><span class="re1">&lt;appender</span> <span class="re0">name</span>=<span class="st0">&quot;OtherFileAppender&quot;</span> <span class="re0">class</span>=<span class="st0">&quot;org.apache.log4j.FileAppender&quot;</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="coMULTI">&lt;!--specify the output file--&gt;</span></span>
<span class="sc3"><span class="re1">&lt;param</span> <span class="re0">name</span>=<span class="st0">&quot;file&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;otherLogFile.log&quot;</span><span class="re2">/&gt;</span></span>
<span class="sc3"><span class="coMULTI">&lt;!--define a layout--&gt;</span></span>
<span class="sc3"><span class="re1">&lt;layout</span> <span class="re0">class</span>=<span class="st0">&quot;org.apache.log4j.PatternLayout&quot;</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;param</span> <span class="re0">name</span>=<span class="st0">&quot;ConversionPattern&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;%d{dd MMM yyyy HH:mm:ss} -&nbsp;%p -&nbsp;%m - @%l&nbsp;%n&quot;</span><span class="re2">/&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/layout<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="coMULTI">&lt;!--set a filter--&gt;</span></span>
<span class="sc3"><span class="re1">&lt;filter</span> <span class="re0">class</span>=<span class="st0">&quot;org.apache.log4j.varia.LevelRangeFilter&quot;</span><span class="re2">&gt;</span></span>
<span class="sc3"><span class="re1">&lt;param</span> <span class="re0">name</span>=<span class="st0">&quot;LevelMin&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;INFO&quot;</span><span class="re2">/&gt;</span></span>
<span class="sc3"><span class="re1">&lt;param</span> <span class="re0">name</span>=<span class="st0">&quot;LevelMax&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;FATAL&quot;</span><span class="re2">/&gt;</span></span>
<span class="sc3"><span class="re1">&lt;param</span> <span class="re0">name</span>=<span class="st0">&quot;AcceptOnMatch&quot;</span> <span class="re0">value</span>=<span class="st0">&quot;true&quot;</span><span class="re2">/&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/filter<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;/appender<span class="re2">&gt;</span></span></span>
&nbsp;
<span class="sc3"><span class="coMULTI">&lt;!--reference the appender to a logger--&gt;</span></span>
<span class="sc3"><span class="re1">&lt;root<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;priority</span> <span class="re0">value</span>=<span class="st0">&quot;All&quot;</span><span class="re2">/&gt;</span></span>
<span class="sc3"><span class="re1">&lt;appender-ref</span> <span class="re0">ref</span>=<span class="st0">&quot;DebugFileAppender&quot;</span><span class="re2">/&gt;</span></span>
<span class="sc3"><span class="re1">&lt;appender-ref</span> <span class="re0">ref</span>=<span class="st0">&quot;OtherFileAppender&quot;</span><span class="re2">/&gt;</span></span>
<span class="sc3"><span class="re1">&lt;/root<span class="re2">&gt;</span></span></span>
&nbsp;
<span class="sc3"><span class="re1">&lt;/log4j:configuration<span class="re2">&gt;</span></span></span></pre></div>
<p>At last you invoke you xml-configuration-file over the <b>DomConfigurator</b> in you java code.
</p>
<div dir="ltr" style="text-align: left;"><pre class="source-java"><span class="kw1">import</span> org.<span class="me1">apache</span>.<span class="me1">log4j</span>.<span class="me1">xml</span>.<span class="me1">DOMConfigurator</span>;
&nbsp;
<span class="kw1">public</span> <span class="kw4">void</span> LoggerProperties<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
DOMConfigurator.<span class="me1">configureAndWatch</span><span class="br0">&#40;</span><span class="st0">&quot;log4j.xml&quot;</span><span class="br0">&#41;</span>;
<span class="br0">&#125;</span></pre></div>
<p><br />
</p>
<a name="Additional_logging:_Records_lifecycle_information"></a><h3> <span class="mw-headline">Additional logging: Records lifecycle information</span></h3>
<p>The Path of a record that travels through our framework maybe seems a bit obscure. Highlighting this logging messages to get a better overview requires a new class: <tt>org.eclipse.smila.utils.log.RecordLifecycleLogHelper</tt>
</p><p>This helper class uses the same Logger as all logging events, but with a predefined name (“Records”) and put id information into the log message.
</p><p><b>To log a message regarding a record keep with this scheme.</b>
</p>
<div dir="ltr" style="text-align: left;"><pre class="source-java"><span class="kw1">if</span> <span class="br0">&#40;</span>RecordLifecycleLogHelper.<span class="me1">isRecordStateLogEnabled</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
RecordLifecycleLogHelper.<span class="me1">logRecordState</span><span class="br0">&#40;</span><span class="kw3">String</span> message, <span class="kw3">String</span> idHash<span class="br0">&#41;</span>;
<span class="br0">&#125;</span></pre></div>
<p><b>Methods in detail</b>
</p>
<div dir="ltr" style="text-align: left;"><pre class="source-java"><span class="co1">//Logger name.</span>
<span class="kw1">private</span> <span class="kw1">static</span> <span class="kw1">final</span> <span class="kw3">String</span> RECORDS_LOGGER = <span class="st0">&quot;Records&quot;</span>;
&nbsp;
<span class="co1">//Checks if logging of record state is enabled.</span>
<span class="kw1">public</span> <span class="kw1">static</span> <span class="kw4">boolean</span> isRecordStateLogEnabled<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
<span class="kw1">final</span> Log log = LogFactory.<span class="me1">getLog</span><span class="br0">&#40;</span>RECORDS_LOGGER<span class="br0">&#41;</span>;
<span class="kw1">return</span> log.<span class="me1">isInfoEnabled</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;
<span class="br0">&#125;</span>
&nbsp;
<span class="co1">//Logs record state.</span>
<span class="kw1">public</span> <span class="kw1">static</span> <span class="kw4">void</span> logRecordState<span class="br0">&#40;</span><span class="kw3">String</span> message, <span class="kw3">String</span> idHash<span class="br0">&#41;</span> <span class="br0">&#123;</span>
<span class="kw1">final</span> Log log = LogFactory.<span class="me1">getLog</span><span class="br0">&#40;</span>RECORDS_LOGGER<span class="br0">&#41;</span>;
<span class="kw1">if</span> <span class="br0">&#40;</span>log.<span class="me1">isInfoEnabled</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
log.<span class="me1">info</span><span class="br0">&#40;</span>message + <span class="st0">&quot;, record id=&quot;</span> + idHash<span class="br0">&#41;</span>;
<span class="br0">&#125;</span>
<span class="br0">&#125;</span></pre></div>
<p><b>One short log file example</b>
</p>
<div dir="ltr" style="text-align: left;"><pre class="source-java"><span class="nu0">2008</span><span class="nu0">-11</span><span class="nu0">-17</span> <span class="nu0">14</span>:<span class="nu0">53</span>:<span class="nu0">35</span>,<span class="nu0">755</span> INFO <span class="br0">&#91;</span>Thread<span class="nu0">-14</span> <span class="br0">&#93;</span> Records - Record was crawled by dataSource=file, record id=53b573f1afa23a3c176c9567f8f
<span class="nu0">2008</span><span class="nu0">-11</span><span class="nu0">-17</span> <span class="nu0">14</span>:<span class="nu0">53</span>:<span class="nu0">35</span>,<span class="nu0">771</span> INFO <span class="br0">&#91;</span>Thread<span class="nu0">-14</span> <span class="br0">&#93;</span> Records - DeltaIndexing data is <span class="kw1">new</span> or changed, record id=53b573f1afa23a3c176c9567f8f
<span class="nu0">2008</span><span class="nu0">-11</span><span class="nu0">-17</span> <span class="nu0">14</span>:<span class="nu0">53</span>:<span class="nu0">35</span>,<span class="nu0">927</span> INFO <span class="br0">&#91;</span>Thread<span class="nu0">-14</span> <span class="br0">&#93;</span> Records - Record is routed with rule <span class="br0">&#91;</span><span class="kw1">Default</span> ADD Rule<span class="br0">&#93;</span> and operation <span class="br0">&#91;</span>ADD<span class="br0">&#93;</span>, record id=53b573f1afa23a3c176c9567f8f9a6
<span class="nu0">2008</span><span class="nu0">-11</span><span class="nu0">-17</span> <span class="nu0">14</span>:<span class="nu0">53</span>:<span class="nu0">35</span>,<span class="nu0">958</span> INFO <span class="br0">&#91;</span>Thread<span class="nu0">-8</span> <span class="br0">&#93;</span> Records - Record is processed by Listener with rule: <span class="br0">&#91;</span><span class="kw1">Default</span> ADD Rule<span class="br0">&#93;</span> and operation <span class="br0">&#91;</span>ADD<span class="br0">&#93;</span>, record id=53b573f1afa23a3c176c9567f8f9a6
<span class="nu0">2008</span><span class="nu0">-11</span><span class="nu0">-17</span> <span class="nu0">14</span>:<span class="nu0">53</span>:<span class="nu0">36</span>,<span class="nu0">426</span> INFO <span class="br0">&#91;</span>ODEServerImpl<span class="nu0">-1</span> <span class="br0">&#93;</span> Records - Record added to lucene index, record id=53b573f1afa23a3c176c9567f8f9a6</pre></div>
<a name="Links"></a><h2> <span class="mw-headline">Links</span></h2>
<p><a href="http://logging.apache.org/log4j/1.2/apidocs/index.html" class="external text" title="http://logging.apache.org/log4j/1.2/apidocs/index.html" rel="nofollow">log4j Javadocs</a>
</p><p><a href="http://logging.apache.org/log4j/" class="external text" title="http://logging.apache.org/log4j/" rel="nofollow">Official log4j Homepage </a>
</p><p><a href="http://www.vipan.com/htdocs/log4jhelp.html" class="external text" title="http://www.vipan.com/htdocs/log4jhelp.html" rel="nofollow">Don't Use System.out.println! Use Log4j.</a>
</p>
<!--
NewPP limit report
Preprocessor node count: 39/1000000
Post-expand include size: 0/2097152 bytes
Template argument size: 0/2097152 bytes
#ifexist count: 0/100
-->
<!-- Saved in parser cache with key wikidb:pcache:idhash:16124-0!1!0!!en!2!edit=0 and timestamp 20120710093533 -->
<div class="printfooter">
Retrieved from "<a href="UsefulLogMessages.html">http://wiki.eclipse.org/SMILA/Specifications/UsefulLogMessages</a>"</div>
<!-- end content -->
<div class="visualClear"></div>
</div>
</div>
</div>
<!-- Yoink of toolbox for phoenix moved up -->
</div>
</div>
<div id="clearFooter"/>
<div id="footer" >
<ul id="footernav">
<li class="first"><a href="http://www.eclipse.org/">Home</a></li>
<li><a href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a></li>
<li><a href="http://www.eclipse.org/legal/termsofuse.php">Terms of Use</a></li>
<li><a href="http://www.eclipse.org/legal/copyright.php">Copyright Agent</a></li>
<li><a href="http://www.eclipse.org/org/foundation/contact.php">Contact</a></li>
<li><a href="http://wiki.eclipse.org/Eclipsepedia:About" title="Eclipsepedia:About">About Eclipsepedia</a></li>
</ul>
<span id="copyright">Copyright &copy; 2012 The Eclipse Foundation. All Rights Reserved</span>
<p id="footercredit">This page was last modified 16:33, 17 November 2008 by <a href="http://wiki.eclipse.org/index.php?title=User:Pwissel.brox.de&amp;action=edit" class="new" title="User:Pwissel.brox.de">Peter Wissel</a>. Based on work by <a href="http://wiki.eclipse.org/index.php?title=User:Szhbankova.brox.de&amp;action=edit" class="new" title="User:Szhbankova.brox.de">Sofya Zhbankova</a>.</p>
<p id="footerviews">This page has been accessed 3,867 times.</p>
</div>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-910670-4");
pageTracker._trackPageview();
</script>
<!-- <div class="visualClear"></div> -->
<script type="text/javascript">if (window.runOnloadHook) runOnloadHook();</script>
</div>
<!-- Served in 0.063 secs. --></body></html>