web-dev-qa-db-ja.com

JMeterはテスト/アプリケーションログをどこに保存しますか?

テスト(または必要に応じてアプリケーション)からのログを監視したいと思います。たとえば、次のようなコードにログ行がある場合があります。

logger.info( "dummy log" );

ただし、次のようにJMeterを実行すると次のようになります。

jmeter -n -t foobar.jmx

そのダミーログをどこで探すべきかわかりません。では、JMeterはテストのログをどこに保存しますか?さらに良いことに、どうすれば設定できますか?

どうもありがとうございました。

更新
デフォルトのログファイルjmeter.logにテストログが見つからなかったことを忘れました。テストログの出力を無効にする設定がない限り、テストログがjmeter.logに表示されるのは本当ですか?

更新2
jmeter.propertiesをここに貼り付けました: http://Pastebin.com/6paTqRrK

以下は、関連するコードスニペットです。

package foo.bar;

import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import static org.junit.Assert.assertTrue;

public class DummyTest {
    private static final Logger logger = LoggerFactory.getLogger( DummyTest.class.getName() );

    @Test
    public void test(){
        System.out.println("dummy message");
        logger.info("dummy log");
        assertTrue( true );
    }
}

Gradle build.gradle:

dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.2.1'

    compile 'org.slf4j:slf4j-api:1.7.5'
    runtime 'ch.qos.logback:logback-classic:1.0.13'
    runtime 'ch.qos.logback:logback-core:1.0.13'

    testCompile 'junit:junit:4.11'
}

// bundle everything into a fat jar
jar {
    from {
        configurations.testRuntime.collect {
            it.isDirectory() ? it : zipTree(it)
        } + sourceSets.main.output + sourceSets.test.output

    }
    archiveName = 'junit_sampler.jar'
}

task updateJar( type: Copy, dependsOn: jar ) {
    from './junit_sampler.jar'
    into "${System.properties['user.home']}/opt/Apache-jmeter-2.11/lib/junit"
}

foobar.jmx

<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="2.6" jmeter="2.11 r1554548">
  <hashTree>
    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Check Logging" enabled="true">
      <stringProp name="TestPlan.comments"></stringProp>
      <boolProp name="TestPlan.functional_mode">false</boolProp>
      <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="TestPlan.user_define_classpath"></stringProp>
    </TestPlan>
    <hashTree>
      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
          <boolProp name="LoopController.continue_forever">false</boolProp>
          <stringProp name="LoopController.loops">3</stringProp>
        </elementProp>
        <stringProp name="ThreadGroup.num_threads">1</stringProp>
        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
        <longProp name="ThreadGroup.start_time">1399656770000</longProp>
        <longProp name="ThreadGroup.end_time">1399656770000</longProp>
        <boolProp name="ThreadGroup.scheduler">false</boolProp>
        <stringProp name="ThreadGroup.duration"></stringProp>
        <stringProp name="ThreadGroup.delay"></stringProp>
      </ThreadGroup>
      <hashTree>
        <JUnitSampler guiclass="JUnitTestSamplerGui" testclass="JUnitSampler" testname="JUnit Request" enabled="true">
          <stringProp name="junitSampler.classname">foo.bar.DummyTest</stringProp>
          <stringProp name="junitsampler.constructorstring"></stringProp>
          <stringProp name="junitsampler.method">test</stringProp>
          <stringProp name="junitsampler.pkg.filter"></stringProp>
          <stringProp name="junitsampler.success">Test successful</stringProp>
          <stringProp name="junitsampler.success.code">1000</stringProp>
          <stringProp name="junitsampler.failure">Test failed</stringProp>
          <stringProp name="junitsampler.failure.code">0001</stringProp>
          <stringProp name="junitsampler.error">An unexpected error occured</stringProp>
          <stringProp name="junitsampler.error.code">9999</stringProp>
          <stringProp name="junitsampler.exec.setup">false</stringProp>
          <stringProp name="junitsampler.append.error">false</stringProp>
          <stringProp name="junitsampler.append.exception">false</stringProp>
          <boolProp name="junitsampler.junit4">true</boolProp>
        </JUnitSampler>
        <hashTree/>
      </hashTree>
    </hashTree>
  </hashTree>
</jmeterTestPlan>

どういうわけか、「ダミーログ」メッセージがjmeter.logに表示されません。

7
JBT

デフォルトでは、すべてのログはjmeter.logファイルに送られます。このファイルは通常、JMeterインストールの/ binフォルダーにあります。ただし、場所は、JMeterの起動方法と、その作業ディレクトリによって異なる場合があります。詳細については、 FileServer APIを参照してください。

カスタムクラス、拡張機能、またはプラグインからのログ出力が必要な場合は、構成によって抑制される可能性があります。プロパティを介して、クラスに必要なログレベルをJMeterに「伝える」ことを試みてください。

ロギングレベルの設定例については、JMeterインストールの/ binフォルダーにあるuser.propertiesファイルを参照してください。変更方法については、 Apache JMeterプロパティカスタマイズガイド を参照してください。

ただし、loggerを次のように初期化すると、次のようになります。

import org.Apache.jorphan.logging.LoggingManager;
...
...
private static final Logger logger = LoggingManager.getLoggerForClass(); 
...
logger.info("sonething");

ログにその「何か」の行が表示されます。

お役に立てれば。

3
Dmitri T

JMeter 2.13の場合、一般的なlog4j設定を配置できるbin /log4j.confを編集する必要があります。たとえば、bin /root.logファイルは次のように記録されます。

###############################  IMPORTANT NOTE  ##############################
# JMeter does not use log4j as logging system
# This configuration will only be used by libraries that do use log4j
# or your custom code if it uses it

log4j.appender.Root_Appender=org.Apache.log4j.RollingFileAppender
log4j.appender.Root_Appender.File=root.log
log4j.appender.Root_Appender.Append=true
log4j.appender.Root_Appender.MaxBackupIndex=0
log4j.appender.Root_Appender.layout=org.Apache.log4j.PatternLayout
log4j.appender.Root_Appender.layout.ConversionPattern=%-5p %d{MM/dd, hh:mm:ss} %-20.30c %m%n

log4j.rootCategory=DEBUG,Root_Appender
1
vim

ログファイル名は、jmeter.propertiesファイルで定義されます(または-jオプションを使用します。以下を参照してください)。デフォルトはjmeter.logで、JMeterが起動されたディレクトリにあります。

http://jmeter.Apache.org/usermanual/get-started.html#logging

0
Nidheesh