[英]implicitly logging messages received by an actor in scala
我是這個奇特的語言scala的新手,我正在嘗試創建一個用於記錄scala actor的庫。 我的圖書館有一個Logger類,它擴展了Actor類。 因此,任何使用actor模型的Scala應用程序都可以從此類擴展,也可以從Actor類擴展以添加日志功能。 例如。 MyClass類擴展了Logger。 在我的Logger類中,我實現了這樣的邏輯:每當有人向某個actor發送消息時,該消息就會由發送actor的日志文件記錄下來。 為此,每當有人向其他演員發送消息而不是調用scala send函數時,例如
caller ! msg
庫調用的用戶
send(caller,msg)
然后,庫函數將在日志中為此消息創建一個條目。 這很好。 我希望為演員收到的消息添加類似的功能。 也就是說,每當參與者收到消息時,庫都應在日志文件中為接收到的消息創建一個條目。 一種方法是,只要用戶收到一個方法,他就可以顯式調用這樣的log方法,
while (true) {
receive {
case msg =>
log(sender, msg)
// do some stuff
}
}
日志功能在日志中進行輸入。 我希望用戶不需要編寫此行日志(發送方,味精),以便該庫對用戶透明,並且沒有用戶需要編寫的添加代碼,並且所有內容均由Logger類隱式記錄。 有沒有辦法做到這一點? 提前致謝。
在Logger類中,重寫方法receive
以便它調用log(sender, msg)
,然后super.receive()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.