【发布时间】:2013-08-08 22:19:01
【问题描述】:
我正在运行 POC 来查看将我们的 j2ee 应用程序迁移到 logback 的影响。 我在官方网站上花了一些时间,显然,除了新 jars 之外,唯一的变化是 logback.xml 文件。不幸的是,看起来还不够,部署工作正常,日志文件也已创建,但没有记录任何内容(空)。
我的代码有以下语句
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger log = LoggerFactory.getLogger(CustomerServiceBean.class);
log.debug("test Log Back - customer ID " + input.getCustomerId());
pom.xml 现在有以下内容
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>0.9.18</version>
</dependency>
logback.xml(使用官网的网络工具创建)
<configuration>
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!--See also http://logback.qos.ch/manual/appenders.html#RollingFileAppender-->
<File>/var/log/dcs-3/dcs3.log</File>
<encoder>
<pattern>%d{ABSOLUTE} %5p %c{1}:%L - %m%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
<maxIndex>1</maxIndex>
<FileNamePattern>/var/log/dcs-3/dcs3.log.%i</FileNamePattern>
</rollingPolicy>
<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
<MaxFileSize>1MB</MaxFileSize>
</triggeringPolicy>
</appender>
<logger name="com.lgi.dcs" level="DEBUG" />
<root level="debug">
<appender-ref ref="file"/>
</root>
</configuration>
有什么想法吗? 谢谢
更新
我按照建议做了一些更改。问题仍然存在,但我能够获得更多信息。
我记录了一个错误而不是一个简单的调试。我从项目中删除了所有 log4j jar 或依赖项,并添加了 log4j-bridge。我将 logback.xml 更改为从另一篇文章中获取的更通用的内容,并在控制台上使用了除了文件之外的附加程序。
现在在我的 IDE 中,Logger 实例看起来是由 ch.qos.locback.classic.Logger 实现的。 日志文件仍然是空的,但如果我将其删除,则会在服务器启动期间重新创建。 在服务器日志上,我现在可以看到我的测试消息,例如:
SLF4J:类路径包含多个 SLF4J 绑定。 SLF4J:找到 绑定在 [zip:/opt/oracle-soa/user_projects/domains/osb/servers/AdminServer/tmp/_WL_user/dcs3-ear-3/9yhkv9/APP-INF/lib/logback-classic-0.9.18.jar!/org /slf4j/impl/StaticLoggerBinder.class] SLF4J:发现绑定 [zip:/opt/oracle-soa/user_projects/domains/osb/servers/AdminServer/tmp/_WL_user/dcs3-ear-3/9yhkv9/APP-INF/lib/logback-classic-0.9.18.jar!/org /slf4j/impl/StaticLoggerBinder.class] SLF4J:见http://www.slf4j.org/codes.html#multiple_bindings 解释。 11:40:17.902 [[ACTIVE] ExecuteThread: '12' 用于队列: 'weblogic.kernel.Default (self-tuning)'] 错误 c.l.d.s.customer.CustomerServiceBean - 测试 Log Back - 客户 ID 6107576
这或许让我想到了 weblogic 中的 log4j。
【问题讨论】:
-
你的 logback.xml 看起来怎么样?
-
类路径中有 logback.xml 吗?你的程序在运行时会找到它吗?
-
我猜是的,因为文件已创建,但为空。它位于耳朵的 ejb 部分,与以前的 log4j 处于同一级别。
-
但是在调试时我看到了记录器的 org.slf4j.impl.Log4jLoggerAdapter。
-
您是否尝试记录与调试不同的级别?尝试在错误级别记录一些内容,看看会发生什么。这不太可能发生,但您可能会错误地将其他日志框架留在类路径上。请仔细检查 log4j、apache-logging、jboss-logging