gpt4 book ai didi

gradle - 调试SLF4J Post Gradle转换

转载 作者:行者123 更新时间:2023-12-03 04:42:25 24 4
gpt4 key购买 nike

非常烦人...我们将项目转换为Gradle,日志记录不再起作用。我选择了与当前版本1.6.6匹配的导入,但我们得到的唯一输出就是时间信息,如下所示:

Thu Aug 14 18:51:53 EDT 2014



SLF4J是实现,我们正在使用log4j.xml文件进行存储在classes目录中的设置。如果我从Eclipse运行单元测试,则日志记录机制可以正常工作,但是在将其部署到Tomcat之后我就没有运气了。我也尝试更新到最新版本,但这并不能解决问题。

这是当前的gradle条目:
compile 'org.slf4j:slf4j-api:1.7.7'
compile 'org.slf4j:slf4j-log4j12:1.7.7'

就像我说的,我们正在使用log4jxml.file进行配置,这很长,可能不是必需的(只是因为,就像我说的那样,这在以前是可行的),但这是一个不起作用的简短版本:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

<!-- Appenders -->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out" />
<param name="Threshold" value="info"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-5p: %c - %m%n LOGTEST" />
</layout>
</appender>

<appender name="file" class="org.apache.log4j.RollingFileAppender">
<param name="append" value="false"/>
<param name="Threshold" value="info"/>
<param name="file" value="${catalina.base}/logs/application.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
</layout>
</appender>

<logger name="org.springframework.ws">
<level value="trace" />
</logger>

<!-- Root Logger -->
<root>
<priority value="trace" />
<appender-ref ref="file" />
<appender-ref ref="errorFile" />
<appender-ref ref="console" />
</root>

</log4j:configuration>

这确实适用于在Eclipse中运行单元测试。但是,如果将其部署到Tomcat并从Eclipse启动服务器,我将不再获得输出。请注意上面的“LOGTEST”字符串。这是我的控制台日志输出如下所示:
LOGTESTINFO : org.springframework.web.servlet.handler.SimpleUrlHandlerMapping - Mapped URL path [/resources/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#0'
LOGTESTINFO : com.mycompany.cerp.app.MyApp - Loading trusted certs from C:\tomcat\webapps\ROOT\WEB-INF\validcerts
LOGTESTINFO : com.mycompany.cerp.app.MyApp - Loading Certificate: C:\tomcat\webapps\ROOT\WEB-INF\validcerts\certs_output.crt
LOGTESTINFO : org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'mvc-dispatcher': initialization completed in 874 ms
LOGTESTAug 18, 2014 6:34:56 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-8000"]
Aug 18, 2014 6:34:56 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
Aug 18, 2014 6:34:56 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 8561 ms
Aug 18, 2014 6:35:06 PM org.apache.jasper.compiler.TldLocationsCache tldScanJar
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Thu Aug 14 18:51:53 EDT 2014
Thu Aug 14 18:51:53 EDT 2014

请注意,最后两行反射(reflect)了自定义记录器的消失

最佳答案

这个问题的性质以及我无法看到的解决方案表示对依赖性的某种故意的无知。如果我将slf4j与log4j用作基础实现,那么为什么需要两个单独的导入?换句话说,就其本质而言, slf4j-log4j12:1.7.7 既需要slf4j又需要log4j,因此这些后者不需要作为依赖项列出。

我在OP中使用的两个import语句不兼容,我通过将import更改为just来解决此问题:

compile 'org.slf4j:slf4j-log4j12:1.7.7'

关于gradle - 调试SLF4J Post Gradle转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25373017/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com