Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将Wiremock配置为将log4j与自定义转换器一起使用_Java_Logging_Log4j_Slf4j_Wiremock - Fatal编程技术网

Java 将Wiremock配置为将log4j与自定义转换器一起使用

Java 将Wiremock配置为将log4j与自定义转换器一起使用,java,logging,log4j,slf4j,wiremock,Java,Logging,Log4j,Slf4j,Wiremock,我将Wiremock作为一个独立进程运行(v2.5.1)。我已经通过扩展创建了一个Java自定义转换器:com.github.tomakehurst.wiremock.extension.ResponseTransformer 然后,我的自定义transformer使用其他一些使用Log4J进行日志记录的通用代码。代码如下: import org.apache.log4j.Logger; 私有静态记录器=Logger.getLogger(CommonCode.class); ... logger

我将Wiremock作为一个独立进程运行(v2.5.1)。我已经通过扩展创建了一个Java自定义转换器:com.github.tomakehurst.wiremock.extension.ResponseTransformer

然后,我的自定义transformer使用其他一些使用Log4J进行日志记录的通用代码。代码如下:

import org.apache.log4j.Logger;
私有静态记录器=Logger.getLogger(CommonCode.class);
...
logger.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:

  • log4j-1.2.17.jar
  • slf4j-api-1.7.2.jar
  • slf4j-log4j12-1.7.2.jar

我希望此自定义日志记录与默认Wiremock详细日志记录转到单独的日志文件。任何帮助都将不胜感激。

一旦我意识到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属性。我还显式地将属性文件添加到此类路径。这两种方法都不起作用(因此提出了这个问题)。我的自定义transformer类com.myorg.CustomTransformer也存在于一个jar中,该jar也位于lib目录中(已拾取)

然而,经过一些研究,我发现了两种方法来获取log4j属性文件

  • 将log4j属性位置指定为批处理脚本中的另一个-D参数。如果我添加了
    -Dlog4j.configuration=file://c:/WireMock/lib/log4j.xml
  • 更新我的自定义jar构建脚本,将log4j.xml文件本身包含在jar中