我正在运行Wiremock作为独立进程(v2.5.1)。我通过扩展创建了一个Java自定义转换器: com.github.tomakehurst.wiremock.extension.ResponseTransformer
我的自定义转换器然后使用一些其他使用Log4J进行日志记录的公共代码。代码如下:
import org.apache.log4j.Logger;
private static Logger logger = Logger.getLogger(CommonCode.class);
...
logger.error("This is some error");
无论如何我可以配置Wiremock来输出这个自定义日志记录吗?我已经尝试在类路径中放入log4j.xml和log4j.properties文件。这是属性文件的示例:
log4j.appender.CUSTOMAPPENDER=org.apache.log4j.RollingFileAppender
log4j.appender.CUSTOMAPPENDER.File=c:/WireMock/logs/custom.log
log4j.appender.CUSTOMAPPENDER.layout=org.apache.log4j.PatternLayout
log4j.logger.com.myorg=DEBUG, CUSTOMAPPENDER
等效的log4j.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="CUSTOMAPPENDER" class="org.apache.log4j.DailyRollingFileAppender">
<param name="file" value="C:/WireMock/logs/custom.log"/>
<param name="datePattern" value="'.'yyyy-MM-dd"/>
<param name="append" value="true"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{MMM dd HH:mm:ss}] [%r] %5p [%t] (%F:%L) - %m%n"/>
</layout>
</appender>
<logger name="com.myorg" additivity="false">
<level value="DEBUG"/>
<appender-ref ref="CUSTOMAPPENDER"/>
</logger>
</log4j:configuration>
我的类路径中也有以下JAR:
我希望此自定义日志记录从Default Wiremock verbose日志记录转到单独的日志文件。任何帮助将不胜感激。
答案 0 :(得分:1)
一旦我意识到log4j无法找到log4j.properties或log4j.xml文件,我就能解决问题。基本上,log4j属性文件必须位于Wiremock Java进程的类路径中。
我通过批处理脚本运行Wiremock服务器,如下所示:
"C:/Java/jdk1.8.0_102/bin/java" -Dfile.encoding=UTF-8 -cp "C:/WireMock/lib/wiremock-standalone-2.5.1.jar;C:/WireMock/lib/*" com.github.tomakehurst.wiremock.standalone.WireMockServerRunner --port="9091" --extensions "com.myorg.CustomTransformer" --root-dir="C:/WireMock" --verbose > "C:/WireMock/logs/wiremock.log"
我的log4j.xml文件位于我的 C:/ WireMock / lib 目录中。我假设因为我有一个cp "C:/WireMock/lib/wiremock-standalone-2.5.1.jar;C:/WireMock/lib/*"
的类路径条目,其中包含 C:/ WireMock / lib / * ,它将获取我的log4j属性。我还明确地将属性文件添加到此类路径中。这些都没有奏效(因此这个问题)。我的自定义变换器类 com.myorg.CustomTransformer 也存在于lib目录中的一个jar中(已被拾取)。
然而,经过一些研究,我找到了两种方法来获取log4j属性文件。
-Dlog4j.configuration=file://c:/WireMock/lib/log4j.xml