2014-09-25 132 views
1

我使用蝗蟲來壓力測試我們的應用程序。我在哪裏可以找到蝗蟲日誌?

我收到錯誤,因爲POST調用看起來不正確。我在哪裏可以看到蝗蟲的日誌?我希望看到後來看看發生了什麼問題。

這裏是我的代碼的情況下,有人能告訴我,我做錯了什麼:

from locust import HttpLocust, TaskSet, task 

json3 = """{"stack_name": "beenz-php-app-12", "disable_rollback": true, "template": "php", "timeout_mins": 60}""" 

class MyTaskSet(TaskSet): 
    @task 
    def send(self): 
      response = self.client.post("/stacks", json3, headers={'X-Auth-Key': 'xxxx', 'Content-Type': 'application/json', 'X-Auth-User': 'xxxx', 'Accept': 'application/json', 'X-Auth-Token':'xxxx'}) 
      print "Response status code:", response.status_code 
      print "Response content:", response.content 

class MyLocust(HttpLocust): 
    task_set = MyTaskSet 
    min_wait = 5000 
    max_wait = 15000 

謝謝!

+0

我在Locust中看到這個錯誤:HTTPError('500服務器錯誤:服務器錯誤') – Beenz 2014-09-26 13:52:41

回答

0

您在以response = self.client.post(...開頭的行上有語法錯誤。最後一個字符串永遠不會關閉:'X-Auth-Token':'xxxx}

將其更改爲'X-Auth-Token':'xxxx'}並且該腳本應該正常工作。

當您使用您發佈的腳本啓動Locust(語法錯誤)時,您將立即得到一個Exception和堆棧跟蹤。

+0

當我用x's替換實際的令牌時,我想我偶然拿出了結束語。在我的腳本中,它在那裏。我看到的錯誤是500。我想知道Locust的日誌在哪裏,這樣我就可以看看帖子的樣子。當我使用郵差與相同的網址,身體和頭 - 它工作正常。 – Beenz 2014-09-26 13:56:54

+0

我明白了。我不確定你指的是什麼樣的日誌。調試問題的一種方法可能是使用postman和Locust對http://requestb.in/執行請求,然後查看不同之處。 – heyman 2014-09-26 18:08:25

5

通過蝗蟲開始時加入--logfile=locustfile.log參數,您print消息將被重定向到一個名爲locustfile.log文件,我認爲是日誌你在你的問題中提到。

假設你的蝗蟲文件名是locustfile.py。你在你的本地機器上運行蝗蟲。您可以通過locust --host=http://127.0.0.1 --logfile=locustfile.log啓動蝗蟲。然後你就可以在http://127.0.0.1:8089/上運行蝗蟲測試。

0

如果不明顯,則沒有默認設置。 https://github.com/locustio/locust/blob/master/locust/main.py

線167

# log file 
parser.add_option(
    '--logfile', 
    action='store', 
    type='str', 
    dest='logfile', 
    default=None, 
    help="Path to log file. If not set, log will go to stdout/stderr", 
) 

只是傳遞的情況下運行作爲後臺進程作爲lyen提到的優選的位置。

0

其他人提到的--logfile選項可能是最簡單的路線。請注意,您可能想記錄您的消息而不是打印它們。我想蝗蟲會建立一個特殊的stdout記錄器,使得print消息進入控制檯,但不會記錄到日誌文件。

--logfile的替代方法是利用python的日誌記錄系統添加自己的文件appender。如果你需要一個滾動文件appender,或者有一個你喜歡的格式與蝗蟲配置的格式相比,這是一個很好的選擇。

以下是我們如何在我們的蝗蟲測試中設置和使用日誌的示例。注意任務集的每個實例如何登錄到其自己的記錄器。這使得將日誌文件過濾到單個蝗蟲很容易。另請注意,我們將所有HTTP錯誤記錄爲警告。

from locust import HttpLocust, TaskSet, task 
import itertools 
import logging 
import socket 
from logging.handlers import RotatingFileHandler 

def append_file_logger(): 
    root_logger = logging.getLogger() 
    log_format = "%(asctime)s.%(msecs)03d000 [%(levelname)s] {0}/%(name)s : %(message)s".format(socket.gethostname()) 
    formatter = logging.Formatter(log_format, '%Y-%m-%d %H:%M:%S') 
    file_handler = RotatingFileHandler('./locust.log', maxBytes=5 * 1024 * 1024, backupCount=3) 
    file_handler.setFormatter(formatter) 
    file_handler.setLevel(logging.INFO) 
    root_logger.addHandler(file_handler)  

append_file_logger() 

counter = itertools.count() 

class FooTaskSet(TaskSet): 
    def on_start(self): 
     self.logger = logging.getLogger('locust-%03d' % counter.next()) 
     self.logger.info('Hatching locust') 

    @task 
    def send(self): 
     response = self.client.post(...) 
     if not response.ok: 
      self.logger.warn('Error sending post') # TODO add status code, url, and reponse to the log 

最後建議:如果你有多個任務,它們配置相同格式來記錄所有的HTTP錯誤。使您可以輕鬆從日誌中提取數據。

相關問題