Khi làm việc với những hệ thống cũ , đôi khi có những Error Log được bắn tới Mail liên tực , mà những Error Log đó thực chất cũng không nguy hiểm gì , ta muốn chặn việc gửi Error Log đó tới Mail. Nhưng ta lại không thể vô cái Class phát sinh ra Error Log đó để thay đổi Event Level Log, vì đó là 1 file .jar chẳng hạn , thì khi đó ta có thể sử dụng phương thức isTriggeringEvent() của interface TriggeringEventEvaluator để bắt lại cái Error Log đó và xử lý đê không gửi nó đến Mail nữa. Phương thức isTriggeringEvent( ) nếu set giá trị trả về là false thì Error Log đó sẽ không được bắn tới Mail .
1. Giới thiệu về cách gửi Mail trong Java
Khi sử dụng class SMTPAppender , bạn có thể gửi đến Mail 1 Output Log . Để sử dụng class này thì cần có JavaMail và JAF ( JavaBeans Activation Framework ), bạn có thể tham khảo cách cài đặt và sử dụng ở đây http://vietjack.com/java/gui_email_trong_java.jsp.
Để tạo Object của SMTPAppender ta có 2 cách :
2. Bắt Event Log của 1 Class bất kỳ
Sau đây tôi sẽ hướng dẫn chi tiết về việc bắt Event Log của 1 Class bất kỳ, và sử lý để nó không gửi Error Log tới Mail.
Giống như trên ta tạo 1 class kế thừa interface TriggeringEventEvaluator. Class này sẽ bắt tất cả các Log có Level là Error và lọc ra cái Log Error có tên là E-OTT-0003 , khi set Method isTriggeringEvent( ) trả về false thì Error Log này sẽ không được gửi tới Mail.
import org.apache.log4j.Level; import org.apache.log4j.spi.LoggingEvent; import org.apache.log4j.spi.TriggeringEventEvaluator; //Nếu ERROR LOG có tên là E-OTT-0003 thì sẽ chặn lại không gửi tới mail public class OttSkipSendMailLog implements TriggeringEventEvaluator { @Override public boolean isTriggeringEvent(LoggingEvent event) { if (event.getLevel().toInt() != Level.ERROR.toInt()) { return false; } if (event.getThrowableStrRep()[0].toString().contains("E-OTT-0003")) { return false; } return true; } }
Tiếp theo là sẽ thiết lập , khai báo các thông số cho việc gửi Mail trong fiel log4j.xml
Vài điểm cần lưu ý
- Class kế thứa interface TriggeringEventEvaluator
- Class cần bắt Event Level Log
3. Kết luận
Bài viết được viết trên những điểu căn bản nhất , thiết thực nhất khi làm một project thực tế, không có kiến thức gì cao siêu phức tạp , nhưng lại có thể giúp ích đối với những bạn mới vào nghề .
Tham khảo