使用Lift配置日志记录

时间:2011-02-17 13:58:40

标签: scala log4j lift slf4j

关于日志记录的提升wiki page表明很多设置都是自动完成的。现在我的问题是我已经有一个运行后端,它有自己的日志配置和我的类路径中应该使用的log4j.properties文件。 log4j和SLF4j也存在于类路径中的依赖关系。

主要问题是我获得了所有内容的完整调试输出。特别是Hibernate - 这非常烦人。

我正在使用Lift 2.3-M1并尝试在boot()

的开头执行以下操作
Logger.setup = Full(Log4j.withFile(getClass().getResource("/props/log4j.xml")))

我正在使用的log4j.xml很快被黑客攻击,只是简单地抑制了DEBUG输出。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration threshold="info" xmlns:log4j="http://jakarta.apache.org/log4j/">
  <appender name="CA" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="[%p] %c{2} %m%n"/>
    </layout>
  </appender>
  <root>
    <level value="info"/>
    <appender-ref ref="CA"/>
  </root>
</log4j:configuration>

当我创建一个错误log4j.xml时,我也从SAXParser收到错误,因此必须对其进行解析。但是我仍然得到所有DEBUG输出。第二次尝试是做以下事情:

LiftRules.configureLogging = () => ()
Logger.setup = Full(Logback.withFile(getClass().getResource("/props/log4j.xml")))

由于我已经配置了后端,因此我不想让Lift配置日志记录,我现在想完全关闭它。哦,我也试过LogBoot.logSetup = () => false而没有运气。

我非常感谢有关此问题的任何帮助。

2 个答案:

答案 0 :(得分:3)

问题得到解答on the Lift mailing list

修复方法是删除logback依赖项,并同时包含log4jslf4j-log4j。除了有效的boot()之外,还不需要default.log4j.xml中的其他配置。

答案 1 :(得分:2)

我遇到了类似的问题,并提出了以下解决方案:

import net.liftweb.common.{ Empty, Logger }
import net.liftweb.http.Bootable
class BootLoader extends Bootable {
  def boot = {
    // other boot configuration ...

    // prevent Lift from messing up my log4j config                                                                                                                          
    Logger.setup = Empty
  }
}