That all looks right.

Is the message not coming out at all or coming out once only? I ask because it is in a "getOrFill" so the Callable is only called when there is a cache miss.

    Andy

On 22/10/17 18:22, Chris Tomlinson wrote:
Hello Andy,

Thank you for the reply. I’m apparently not facile with log4j.properties. I've 
tried several configurations and I'm only able to get the TextQueryPF 
log.debug() to fire:

[2017-10-22 16:47:52] Fuseki     INFO  [1] POST 
http://localhost:13180/fuseki/bdrcrw/query
[2017-10-22 16:47:52] Fuseki     INFO  [1] POST /bdrcrw :: 'query' :: 
[application/x-www-form-urlencoded charset=UTF-8] ?
[2017-10-22 16:47:52] Fuseki     INFO  [1] Query = PREFIX : <http://purl.bdrc.io/ontology/root#> PREFIX rdf: 
<http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> PREFIX owl: <http://www.w3.org/2002/07/owl#> 
PREFIX adm: <http://purl.bdrc.io/ontology/admin/> PREFIX bdo: <http://purl.bdrc.io/ontology/core/> PREFIX bdr: <http://purl.bdrc.io/resource/> 
PREFIX text: <http://jena.apache.org/text#> PREFIX skos: <http://www.w3.org/2004/02/skos/core#> PREFIX lang: <http://ontologi.es/lang/core#> PREFIX 
ad: <http://schemas.talis.com/2005/address/schema#>  select ?s ?n ?sc where {   (?s1 ?sc ?lit) text:query (bdo:chunkContents 
"\"དགའ་རབ་རྡོ་རྗེ་\"") .   ?s bdo:eTextHasChunk ?s1 .   ?s1 bdo:seqNum ?n . } limit 10
[2017-10-22 16:47:52] TextQueryPF DEBUG Text query: "དགའ་རབ་རྡོ་རྗེ་" (-1)
[2017-10-22 16:47:52] Fuseki     INFO  [1] 200 OK (423 ms)

I’ve tried a variety of configurations along the following lines:

log4j.rootLogger=INFO, jena.plainstdout
log4j.logger.org.apache.jena=INFO
log4j.logger.org.apache.jena.fuseki=INFO
log4j.logger.org.apache.jena.query.text=DEBUG
log4j.logger.org.apache.jena.query.text.TextQueryPF=DEBUG
log4j.logger.org.apache.jena.query.text.TextIndexLucene=DEBUG


As I understand, setting  log4j.logger.org.apache.jena=DEBUG should be 
sufficient (if too verbose) and setting 
log4j.logger.org.apache.jena.query.text=DEBUG should have enabled debug for any 
class in the package and I really thought 
log4j.logger.org.apache.jena.query.text.TextIndexLucene=DEBUG should have 
enabled debug level in TextIndexLucene specifically. Setting 
log4j.logger.org.apache.jena.query.text=DEBUG and 
log4j.logger.org.apache.jena.query.text.TextQueryPF=INFO indeed turns off the 
log.debug in TextQueryPF as I expected.

The code region containing the log.debug() in TextIndexLucene is:


         String queryString = textClause ;
         if (langClause != null)
             queryString = "(" + queryString + ") AND " + langClause ;
         if (graphClause != null)
             queryString = "(" + queryString + ") AND " + graphClause ;

         if ( log.isDebugEnabled())
             log.debug("Lucene query: {} ({})", queryString,limit) ;

         IndexSearcher indexSearcher = new IndexSearcher(indexReader) ;
         Query query = parseQuery(queryString, queryAnalyzer) ;
         if ( limit <= 0 )
             limit = MAX_N ;
         ScoreDoc[] sDocs = indexSearcher.search(query, limit).scoreDocs ;

         List<TextHit> results = new ArrayList<>() ;


And I know that execution passes the log.isDebugEnabled and reaches the 
parseQuery() since I can inject a queryString with an error and see the stack 
trace where the ParseException is caught in the getOrFill().

As far as I can tell the log is setup in the same manner in TextQueryPF and 
TextIndexLucene:

import org.slf4j.Logger ;
import org.slf4j.LoggerFactory ;

/** property function that accesses a text index */
public class TextQueryPF extends PropertyFunctionBase {
     private static Logger log = LoggerFactory.getLogger(TextQueryPF.class) ;


and

import org.slf4j.Logger ;
import org.slf4j.LoggerFactory ;

public class TextIndexLucene implements TextIndex {
     private static Logger          log      = 
LoggerFactory.getLogger(TextIndexLucene.class) ;


What am I missing?

Thanks,
Chris




On Oct 21, 2017, at 3:33 PM, Andy Seaborne <[email protected]> wrote:



On 20/10/17 20:00, Chris Tomlinson wrote:
Hi,
I’m interested in looking into whether and how it might be possible to 
incorporate Lucene highlighting into jena-text. I don’t see any other work, but 
perhaps others have dealt with the topic already. I was thinking of some sort 
of a 4th return parameter in the PF.
While examining the code I found an oddity. I was interested in seeing the 
final Lucene query created in TextIndexLucene via the log.debug at line 417 but 
it never fires even though the log.debug at line 249 in TextQueryPF produces 
expected output. I’m guessing that somehow the use of the lambda in getOrFill 
of the cache at line 267 of TextQueryPF somehow obscures the logging 
properties. Maybe that’s why there’s the commented out alternative that avoids 
the cache?

Because they are different loggers? As statics, they are as compiled, no 
closure related.

TextIndexLucene.class and TextQueryPF.class respectively.

(I see the "no cache" code as a debugging remains - there was a cache issue 
recently)

    Andy

Thanks,
Chris


Reply via email to