2017-01-23 79 views
1

我想動態設置系統日誌消息的目的地,我無法弄清楚如何去做。我希望根據郵件的內容將郵件記錄到某些文件夾中。基於消息內容的系統日誌目的地

例如,我虛構的程序會根據它的ID在系統中記錄關於系統中的對象的消息。因此,對象上的每個CRUD操作都使用其ID進行記錄。我想根據它的ID爲每個對象都有一個單獨的日誌文件。

如果有一種方法可以通過正則表達式解析ID,存儲ID,然後在目標中使用它,我將能夠滿足我的要求。

類似這樣的東西(很明顯是僞代碼並且不起作用),其中每個日誌消息都有對象ID作爲日誌文件名,這是每個存儲在括號中的日誌消息的4位數字:

# somehow parse out value that matches the regex \[\s\d][\s\d][\s\d][\s\d]\] and store it in $id 
destination df_dest { file("/v/logs/${YEAR}${MONTH}${DAY}/$id.log"); }; 
filter f_program { program("program"); }; 
log { source(s_all); filter (f_program); destination (df_dest); flags(final); }; 

在這種情況下,將有2個日誌文件...

1234.log

6789.log

...每個組中2個消息。

[1234] Updated. 
[1234] Deleted. 
[6789] Created. 
[6789] Fetched. 

任何幫助,非常感謝。

回答

0

系統日誌本身不允許你想到的。 syslog facilities允許使用localx工具記錄分隔文件。但他們被限制在8

達到你想要使用syslog什麼,即登錄到日誌消息的內容不同的文件的基礎上,你將不得不@qux編寫自定義syslog output plugin

+1

感謝。在寫入syslog時,我最終'標記'了$ {PROGRAM}。然後我使用過濾器將消息路由到正確的日誌文件。有用。 –