首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >迁移到weblogic上的logback,但不是日志记录

迁移到weblogic上的logback,但不是日志记录
EN

Stack Overflow用户
提问于 2013-08-07 13:44:00
回答 3查看 3.5K关注 0票数 1

我正在运行POC,以了解将我们的j2ee应用程序迁移到logback的影响。我花了一些时间在官方网站上,显然,除了新的jars之外,唯一的改变就是logback.xml文件。不幸的是,看起来还不够,部署工作正常,日志文件也被创建,但是没有任何记录(空)。

我的代码有以下语句

代码语言:javascript
复制
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现在有以下内容

代码语言:javascript
复制
<dependency>
   <groupId>ch.qos.logback</groupId>
   <artifactId>logback-classic</artifactId>
   <version>0.9.18</version>
 </dependency>

logback.xml (使用官方网站的web实用工具创建)

代码语言:javascript
复制
<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 jars或依赖项,并添加了log4j桥。我更改了logback.xml,使用了另一篇文章中的多个泛型,并在控制台上使用了一个除了文件之外的一个附录。

现在,在我的IDE中,Logger实例看起来是由ch.qos.locback.classic.Logger实现的。日志文件仍然是空的,但是如果我删除它,就会在服务器启动时重新创建它。在服务器日志中,我现在可以看到我的测试消息如下:

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:有关解释,请参见bindings。11:40:17.902 [活动ExecuteThread:'12‘用于队列:'weblogic.kernel.Default (自调优)’]错误c.l.d.s.customer.CustomerServiceBean -测试日志返回-客户ID 6107576

这也许会让我想到weblogic中的log4j。

EN

回答 3

Stack Overflow用户

发布于 2013-08-08 05:44:35

如前所述,记录器工厂返回log4j而不是logback的实例。这意味着类路径上仍然有log4j。它可能是直接提供的,也可能是错误地留在那里的,或者它是您正在使用的库的依赖项。如果您正在使用maven,请尝试调查log4j存在的有效POM,并将它们排除在外。否则你必须手动完成。如果您会发现这个依赖项,那么删除它就可以了。

您应该查找的jar可能是log4j-over-slf4j.桥slf4j。jcl-over-slf4j也可能是相关的。

票数 0
EN

Stack Overflow用户

发布于 2013-08-08 06:22:25

Log4jLoggerAdapter存在于SLF4J Log4J包装器实现中。很可能您的类路径中有 SLF4J -log4j12,因此在SLF4J中同时有2个日志后端impl (LogBack和Log4J Impl)。

另一个答案是提到Log4J -over SLF4J,它用于将调用重定向到log4j以使用SLF4J,如果您正在使用LogBack (当然,如果您希望log4j消息通过SLF4J),则应该存在这种情况。

票数 0
EN

Stack Overflow用户

发布于 2016-10-14 15:20:25

对于Java应用程序,如果应用程序直接写入文件系统(因为这会破坏多JVM容器),则会违反规范。

这从根本上排除了在战争中/在耳内进行日志记录的可能性。

相反,可以考虑使用slf4j java.util.logging桥,让容器捕获和管理日志记录。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18105085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档