【发布时间】:2013-02-23 00:56:31
【问题描述】:
我正在使用 Scala Breeze 的 breeze.optimize 包,看起来 Breeze ahs 实现了自己的日志库。
有没有办法将 Breeze 配置为使用 log4j 或 slf4j 等标准日志记录,以便我可以像对应用程序中的其他所有内容一样配置日志记录以进行优化?
或者,我如何关闭日志消息。默认情况下它们处于开启状态,并为我记录函数最小化的每次迭代,这为我产生了很多日志噪音。
Apache Commons 的包装器,基于他的以下回答:
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
}
我可以这样使用:
val lbfgs = new LBFGS[Mat](maxIters, 5, tolerance) {
override val log = new BreezeCommonsLogger[LBFGS[Mat]]
}
【问题讨论】: