0
Play Mailer classへの呼び出しを傍受する方法はありますか?メーラーアクションへの呼び出しを傍受する
私のアプリケーションが送信するすべての電子メールを記録したいと思います。私はメーラーメソッドのパラメーターとメソッド名にアクセスし、これらすべてをログに記録したいと思います。
私は@Withを使用してみましたが、私の@Beforeメソッドが呼び出されていません。
@With(EmailInterceptor.class)
public class Mails extends Mailer {
public static void welcome(User user) {
setSubject("Welcome to my app");
setFrom("Me <[email protected]>");
addRecipient(user.email);
Mailer.send(user);
}
}
public final class EmailInterceptor extends UserAwareControllerBase {
private final static Logger logger = LoggerHelper.getLogger();
@Before
public void logEmail(){
String email = getUser() == null ? "<null>" : getUser().email;
logger.info("Sending email to " + email);
}
}
あまりにも悪いです。今のところ私はあなたの答えを受け入れて、すべてのメールメソッドにロギングコードをコピーして貼り付けます...将来、いつかは変わることを期待しています。 – ripper234
私は回避策があると思います。あなたのMailsクラスで定義された静的メソッドを使ってMailer.send(...)呼び出しをラップするだけです。そのメソッドに傍受したい論理を置き、Mailer.sendの代わりにそのメソッドを呼び出します。それはあなたが望むことをする簡単な方法でなければならない –