2015-08-13 85 views
2

我可以看到腳本是否正在使用App::runningInConsole()命令在控制檯中運行,但我想知道(用於審計日誌記錄目的)哪個命令已從控制檯運行。如何獲取Laravel中的當前控制檯命令

要添加一些上下文 - 當系統或用戶訪問特定類型的數據時,我需要記錄日誌。對於用戶來說,這非常簡單 - 我可以使用Auth::user()並從Request獲取其IP地址,但對於控制檯命令而言,這有點困難。

我可以弄清楚是否有一個控制檯命令正在運行,這很好,但我需要能夠記錄哪個控制檯命令正在運行。

回答

2

我沒有看到直接獲取該信息的方式Laravel。我也不確定這是怎麼可能的,因爲你可以有一個命令執行其他命令,甚至像一些測試工具一樣創建一個新的應用程序實例。

然而,有一種方法可以實現使用普通的PHP。您可以檢查服務器/環境變量以確定如何執行應用程序。

看一看

dd($_SERVER['argv']); 

如果你運行一個命令這應該給你的命令名稱$ _ SERVER [「argv」]作爲[1]

你可以找到更多的信息在這裏:http://php.net/manual/en/reserved.variables.argv.php

+0

是的,我希望只有一些記錄不完善的laravel功能可以調用(比如'App :: currentCommand()'或其他)。在調用命令的命令的實例中,我寧願記錄內部命令。 – samlev

+1

當laravel執行一個命令時,它會更新它所運行的進程的名稱。如果你爲你的命令設置了$ processTitle,你應該通過調用「cli_get_process_title()」來取回你放置的任何東西,只要確保你在CLI中模式。 –

+1

如果設置「protected $ processTitle = _ _ CLASS _ _;」你會得到你所需要的,但我會稱它爲黑客,而不是功能。 –

2

要扎堆控制檯命令與參數,你應該使用類似的東西:

$command = \Request::server('argv', null); 
if (is_array($command)) { 
    $command = implode(' ', $command); 
} 

在Laravel中,您可以使用\Request:server獲取$_SERVER變量。

相關問題