J'utilise le package breeze.optimize
de Scala Breeze, et il semble que Breeze ahs ait implémenté sa propre bibliothèque de journalisation.Comment configurer Scala Breeze pour utiliser log4j ou slf4j
Y a-t-il un moyen de configurer Breeze pour utiliser la journalisation standard comme log4j ou slf4j afin de pouvoir configurer la journalisation pour les optimisations de la même manière que pour tout le reste de mon application?
Sinon, comment puis-je simplement désactiver les messages de journalisation. Ils sont activés par défaut et enregistrent chaque itération d'une minimisation de fonction pour moi, ce qui génère beaucoup de bruit de log pour moi.
Wrapper pour Apache Commons basé en Ontario, il réponse ci-dessous:
import breeze.util.logging.Logger
import breeze.util.logging.Logger.Level
import org.apache.commons.logging.LogFactory
class BreezeCommonsLogger[T: ClassManifest] extends Logger {
private val log = LogFactory.getLog(classManifest[T].erasure)
def trace(f: => Any) { if (log.isTraceEnabled()) log.trace(f.toString) }
def debug(f: => Any) { if (log.isDebugEnabled()) log.debug(f.toString) }
def info(f: => Any) { if (log.isInfoEnabled()) log.info(f.toString) }
def warn(f: => Any) { if (log.isWarnEnabled()) log.warn(f.toString) }
def error(f: => Any) { if (log.isErrorEnabled()) log.error(f.toString) }
def fatal(f: => Any) { if (log.isFatalEnabled()) log.fatal(f.toString) }
def level_=(level: Level) {}
def level = Logger.NEVER
}
J'ai pu utiliser cela comme:
val lbfgs = new LBFGS[Mat](maxIters, 5, tolerance) {
override val log = new BreezeCommonsLogger[LBFGS[Mat]]
}
Cela a fonctionné, à la fois en désactivant NullLogger et en utilisant la même approche pour configurer la journalisation sur une source de journal différente. Éditera ma question pour inclure la classe wrapper. –