2017-07-31 16 views
0

我試圖讓它永遠上自動運行登錄到一個時間標記的日誌文件,以便我們可以跟蹤變化得到一個別名或bash功能有問題,迫使廚師客戶送花兒給人登錄

我已經試圖

alias chef-client='chef-client -L $LOGFILE ' 

,如果我做廚師的客戶端-W,我得到無效的選項-W

我也試過

alias chef-client='{ TIMESTAMP=`(date +"%F %T")`;sudo mkdir -p /var/log/chef;LOGFILE="chef-client-run-$TIMESTAMP";echo "LogName $LOGFILE";chef-client -L $LOGFILE "[email protected]"; }' 

function chef-client() { 
     TIMESTAMP=(date +"%F %T") 
     FILENAME="/var/log/chef/chef-client-run-$TIMESTAMP" 
     chef-client "-L $FILENAME [email protected]"; 
} 
+1

在我看來,像你引用事物的方式存在問題。如果我正確理解你的預期結果,我認爲你函數的最後一行應該是'chef-client -L「$ FILENAME」「$ @」'。 –

+0

請驗證'chef-client -L $ LOGFILE -W'在嘗試別名之前有效。特別要確保將其複製粘貼到一個shell中,以完全按照發布的方式運行。避免說它的工作原理基於它應該的信念,或基於觀察到你認爲不同的命令是相同的作品(比如'chef-client -L myfile -W') –

+0

你應該絕對使用函數而不是這種情況下的別名。 – chepner

回答

0

只是把這個在配置文件(/etc/chef/client.rb):

require "time" 
log_location "/var/log/chef/chef-client-run/#{Time.now.iso8601}.log" 

或者類似的東西,根據需要調整時間戳的格式。

此外,如果您想跟蹤更改,我不會使用日誌輸出。製作一個事件處理程序並跟蹤您想要的實際數據。

+0

你能登錄到日誌和屏幕嗎? – Cap10Bill

+0

它應該仍然會自動登錄到STDOUT,如果它是交互式運行並且格式化程序系統不活動,我想至少。您可以通過手動配置額外的記錄器來強制執行。基本上'Chef :: Log.loggers'是一個數組,您可以放入任何匹配Ruby日誌API的對象。 – coderanger

相關問題