簡體   English   中英

隱式記錄演員在Scala中收到的消息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM