2014-05-08 58 views
4

我想從我的測試(或應用程序,如果你願意)監視日誌。例如,我可能有這樣的代碼日誌行: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); 
    } 
} 

搖籃的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的出現。登錄。

回答

0

日誌文件名在jmeter.properties文件(或使用-j選項,見下文)中定義。它默認爲jmeter.log,並且可以在啓動JMeter的目錄中找到

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

+0

嗨,我沒有在jmeter.log中看到測試日誌。請參閱我的更新。 – JBT

+0

我剛剛在我的機器上用** jmeter-2.9 **進行了測試。我通過將目錄更改爲** \ apache-jmeter-2.9 \ apache-jmeter-2.9 \ bin **並輸入* jmeter -n -t test.jmx -l logjtl.jtl *來以命令行模式運行jmeter。 – Nidheesh

+0

在bin文件夾中發現jmeter.log已更新並且包含日誌。 – Nidheesh

2

默認情況下,所有的日誌去jmeter.log文件,它通常位於你的安裝Jmeter的/ bin文件夾。但是,根據啓動JMeter的方式以及它的工作目錄,位置可能會有所不同。有關更多詳細信息,請參閱FileServer API。

如果你想從自定義類,擴展或插件輸出日誌,它可能會被配置壓制。嘗試通過屬性「告訴」JMeter爲您的課程設置所需的日誌級別。

請參閱user.properties文件位於JMeter安裝的樣本日誌記錄級別配置的/ bin文件夾中,Apache JMeter Properties Customization Guide有關如何更改它們的文件。

不過,我敢肯定,如果你初始化logger如下:

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

你會看到在日誌中說:「東西」行。

希望這會有所幫助。

+0

- @ Dmitri:感謝您的詳細解答。但是,不知何故,它不是我的最終目標。我在這個問題中增加了更多細節。請看一下。我也將我的jmeter.properties粘貼到pastebin。鏈接在問題中。另外,我嘗試了'org.apache.jorphan.logging.LoggingManager',但是gradle無法解析jorphan的依賴關係,所以這個解決方案對我來說不會起作用,因爲我想保持gradle。 – JBT

+0

您需要額外配置'sl4j'日誌記錄以將輸出追加到jmeter.log文件(或任何其他文件)。 http://www.slf4j.org/faq.html –

1

對於JMeter 2.13,您需要編輯bin/log4j.conf,其中可以放置一般的log4j設置。例如,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 
相關問題