2016-02-04 36 views
6

Sto usando Apache Spark's spark-shell con mesos e zookeeper, che sembra funzionare bene tranne che sto ottenendo più logging da zookeeper di quanto vorrei, che è un po ' distrazione:Cambia localmente il livello di registro per il client C dello zookeeper

Welcome to 
     ____    __ 
    /__/__ ___ _____/ /__ 
    _\ \/ _ \/ _ `/ __/ '_/ 
    /___/ .__/\_,_/_/ /_/\_\ version 1.5.0 
     /_/ 

Using Scala version 2.10.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_60) 
Type in expressions to have them evaluated. 
Type :help for more information. 
2015-03-26 20:08:22,115:15978(0x7f83a1fbc740):[email protected][email protected]: Client environment:zookeeper.version=zookeeper C client 3.4.6 
2015-03-26 20:08:22,115:15978(0x7f83a1fbc740):[email protected][email protected]: Client environment:host.name=myhost 
2015-03-26 20:08:22,115:15978(0x7f83a1fbc740):[email protected][email protected]: Client environment:os.name=Linux 
2015-03-26 20:08:22,115:15978(0x7f83a1fbc740):[email protected][email protected]: Client environment:os.arch=3.2.0-34-generic 
2015-03-26 20:08:22,115:15978(0x7f83a1fbc740):[email protected][email protected]: Client environment:os.version=#53-Ubuntu SMP Thu Nov 15 10:48:16 UTC 2012 
2015-03-26 20:08:22,115:15978(0x7f83a1fbc740):[email protected][email protected]: Client environment:user.name=myname 
2015-03-26 20:08:22,115:15978(0x7f83a1fbc740):[email protected][email protected]: Initiating client connection, host=localhost:9999 sessionTimeout=10000 watcher=0xffffffffff sessionId=0 sessionPasswd=<null> context=0x777777777777 flags=0 
2015-03-26 20:08:22,115:15978(0x7f83a1fbc740):[email protected][email protected]: initiated connection to server [127.0.0.1:9999] 
2015-03-26 20:08:22,115:15978(0x7f83a1fbc740):[email protected][email protected]: session establishment complete on server [127.0.0.1:9999], sessionId=0x11111111111111, negotiated timeout=10000 
Spark context available as sc. 
SQL context available as sqlContext. 

scala> 

ho provato a cambiare $SPARK_CONF_DIR/log4j.properties

log4j.logger.org.apache.zookeeper=WARN 

che non ha funzionato, ma non mi stupisce dal momento che il mesos documentation mentions that the zookeeper logging goes directly to stderr:

NOTA: messaggi di log di terze parti (ad es. ZooKeeper) sono scritti solo su stderr!

Aggiunta di un barattolo percorso di classe che ha un blocco statico con una chiamata di interfaccia straniero-funzione per la zookeeper C api function to change the log level sembra che potrebbe funzionare di scintilla, ma non sono sicuro, e non ho alcuna esperienza con chiamando Codice C dalla JVM.

risposta

1

Oltre a,

log4j.logger.org.apache.zookeeper=WARN 

anche Configurare il log-level stderr per stampare i registri soltanto con priorità ERROR (e soprattutto).

# Send WARN or higher to stderr 
log4j.appender.stderr = org.apache.log4j.ConsoleAppender 
log4j.appender.stderr.Threshold = ERROR 
log4j.appender.stderr.Target = System.err 

Anche un LevelRangeFilter potrebbe anche rivelarsi utile come mostrato here.

+0

No, questo non ha fatto alcuna differenza per i registri "ZOO_INFO' del guardiano degli animali, che stanno ancora sputando su stderr. – rampion

1

Impossibile trovare nulla su questo, ma per JNI (Java-to-C) in grado di offrire this. Sembra che nessuno dei due zookeeper non abbia un servizio web o shell (lo zokehell ha però zkshell, ma non è utilizzabile nel nostro caso) che può essere usato.