1. 程式人生 > >傳送錯誤日誌到郵箱的兩種方式

傳送錯誤日誌到郵箱的兩種方式

最近寫專案考慮把一些執行時候出現的異常傳送郵箱,這樣可以隨時監控錯誤,網上看可以用log4J傳送錯誤日誌到郵箱,現在把這種方式記錄下來,以備下次用

1.log4j方式

需要jar包

<dependency>
  <groupId>javax.mail</groupId>
  <artifactId>mail</artifactId>
  <version>1.4.7</version>
</dependency>
<!--log4J-->
<dependency>
  <groupId>
org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency>
log4j.properties配置 這裡需要配置上MAIL
log4j.rootLogger =MAIL 
#傳送錯誤郵件
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender  
log4j.appender.MAIL.Threshold=ERROR 
log4j.appender.MAIL.BufferSize=10 log4j.appender.MAIL.From=*****@126.com log4j.appender.MAIL.SMTPHost=smtp.126.com log4j.appender.MAIL.SMTPUsername=***** log4j.appender.MAIL.SMTPPassword=******* log4j.appender.MAIL.SMTPDebug=true log4j.appender.MAIL.Subject=Log4JErrorMessage log4j.appender.MAIL.To=
*****@163.com log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout log4j.appender.MAIL.layout.ConversionPattern=[framework]%d - %c -%-4r[%t]%-5p %c %x -%m%n</span></strong>
我用126郵箱傳送給163郵箱,打碼的依次是傳送郵箱名,郵箱名,密碼,接收郵箱名, SMTPUHost根據每個郵箱不同,需要自己修改,傳送郵件的日誌級別是ERROR型。

自己測試,每次會發送三次郵件,一次是自己做aop異常捕獲的,還有兩次是druid列印的錯誤日誌,有點繁瑣。決定用第二種方式。

2.自定義郵件傳送util

這個還是需要上面的mail包,下面是我自定義的異常郵件傳送工具

import org.springframework.mail.MailException;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.UnsupportedEncodingException;
import java.util.Properties;
/**
 * Description
 *
 * @author wangsong
 * @date 19:39 2018/1/30
 */
public class ErrorLogMail {
    private static final String HOST = "smtp.126.com";
    private static final Integer PORT = 25;
    private static final String USERNAME = "***@126.com";
    private static final String PASSWORD = "****";
    private static final String EMAILFORM = "***@126.com";
    private static JavaMailSenderImpl mailSender = createMailSender();
/**
     * 郵件傳送器
     *
     * @return 配置好的工具
     */
private static JavaMailSenderImpl createMailSender() {
        JavaMailSenderImpl sender = new JavaMailSenderImpl();
sender.setHost(HOST);
sender.setPort(PORT);
sender.setUsername(USERNAME);
sender.setPassword(PASSWORD);
sender.setDefaultEncoding("Utf-8");
Properties p = new Properties();
p.setProperty("mail.smtp.timeout", "25000");
p.setProperty("mail.smtp.auth", "false");
sender.setJavaMailProperties(p);
        return sender;
}
    /**
     * 傳送郵件
     * @param html 傳送內容
     * @throws MessagingException 異常
     * @throws UnsupportedEncodingException 異常
     */
public static void sendHtmlMail( String html)  {
        try {
            MimeMessage mimeMessage = mailSender.createMimeMessage();
// 設定utf-8或GBK編碼,否則郵件會有亂碼
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
messageHelper.setFrom(EMAILFORM, "wangsong");
messageHelper.setTo("******@163.com");
messageHelper.setSubject("ErrorLog");
messageHelper.setText(html, true);
mailSender.send(mimeMessage);
} catch (MessagingException e) {
            e.printStackTrace();
} catch (UnsupportedEncodingException e) {
            e.printStackTrace();
} catch (MailException e) {
            e.printStackTrace();
}
    }

logger.error(pjp.getSignature() + " error ", e);
//不可知異常,傳送郵件ErrorLogMail.sendHtmlMail("時間:"+new Date()+"方法:"+pjp.getSignature()+"原因:"+e.toString());

方法加在aop捕獲異常處,完成

相關推薦

儲存錯誤日誌方式

/* 儲存錯誤日誌兩種方式 */ // 寫入到檔案當中 //1關閉display_error選項,確保錯誤不會顯示到桌面 //2開啟外部儲存錯誤資訊 log_error=On //3設定錯誤儲存的日誌,檔案位置Error_log=D:/error.log //4 注意不要關

Linux服務器之間傳送文件的方式

linux服務器傳送文件方式一: scp【優點】簡單方便,安全可靠;支持限速參數 【缺點】不支持排除目錄【用法】scp就是secure copy,是用來進行遠程文件拷貝的。數據傳輸使用 ssh,並且和ssh 使用相同的認證方式,提供相同的安全保證 。scp [參數] <源地址(用戶名@IP地址或主機名)

spring boot日誌配置方式

方法一: <?xml version="1.0" encoding="UTF-8" ?> <configuration> <appender name="consoleLog" class="ch.qos.logback.core.

yarn中檢視jobs日誌方式

檢視yarn日誌的兩種方式 1.介面版 1)點選application 2)輸入即可   2.命令列版 yarn logs -applicationId application_1517538889175_2550 > logs.txt 通過v

xshell列印日誌方式

我們使用xshell時會經常需要把xshell中的內容列印到檔案中,或者因為內容過多,xshell介面無法顯示先顯示出的內容,或者需要明確記錄檔案中的東西,與再次執行的結果對比。無論因為什麼原因,都會經常使用到xshell日誌問題。 方法一  1. 開啟“檔案”選單項,選

傳送錯誤日誌郵箱方式

最近寫專案考慮把一些執行時候出現的異常傳送郵箱,這樣可以隨時監控錯誤,網上看可以用log4J傳送錯誤日誌到郵箱,現在把這種方式記錄下來,以備下次用 1.log4j方式 需要jar包 <dependency> <groupId>javax.mai

使用方式,Android 傳送檔案到指定郵箱(帶多個附件)

第一種方法,呼叫系統的郵件軟體來發送 眾所周知在Android中呼叫其他程式進行相關處理,都是使用的Intent。當然,Email也不例外。  在Android中,呼叫Email有三種類型的Intent:  Intent.ACTION_SENDTO  無附件的傳送  

spring4+ThreadPoolTaskExecutor建立執行緒 方式傳送郵件

百度雲程式碼下載地址包含測試用例 :點選後跳轉 ThreadService package com.konglingfu.service; public interface ThreadService extends Runnable{ public void se

Node.js —— 方式傳送單頁面

1、安裝socket.io和express和生成package.json npm install socket.io --save npm install --save express nam init 2、app.js const express = re

js form表單傳送資料方式(post get)區別

<!DOCTYPE HTML> <html> <head> <title>please enter your title</

Shell中將標準錯誤標準輸出重定向到同一個檔案的方式

在Shell中,標準錯誤寫法為 2>, 標準輸出為 1> 或者 >。如要要將標準輸出和標準錯誤合二為一,都重定向到同一個檔案,可以使用下面兩種方式: 方式一: > out.txt 2>&1 [[email protected] ~

方式解決jquery Ajax 傳送中文亂碼的方法,

    查過網上有很多方法,但很多都不成功,可能是因為在不環境下的區別吧! 首先,必須保證前臺後臺的編碼統一,其次在連線資料庫時的url也要指定編碼。 第一:簡單直接,修改頁面 data:{ use

Http協議中,主要常見的傳送資料到伺服器有哪方式,這方式的特點和區別,以及其在Http協議中的位置

Get 和 Post 的區別兩點: 一、這兩者傳遞引數時所用的編碼不一定是一樣的。在 Tomcat 中似乎 Get 的編碼方式是根據頁面中指定的編碼方式,而 Post 則是一直使用同一種編碼方式,可在 Tomcat 的 server.xml 中配置。 二、使用 Get 的時候,引數會顯示在位址列上,而 Po

Network 【用 AFN 通過 POST 方式傳送JSON資料的形式】

POST 傳送資料有兩種形式:1、傳送純文字的內容 2、傳送的 body 部分帶有檔案(圖片,音訊或者其他二進位制資料) 1、使用 POST 方式傳送純文字內容: [mgr POST:@"https://AAAAA" parameters:params success:^(AFHTTPRequestOpe

ABAP 傳送郵件的方式

REPORT ZDDTEST005. DATA: WA_ZBCFILE TYPE ZBCFILE. DATA: IT_ZBCFILE LIKE TABLE OF WA_ZBCFILE. DATA: BEGIN OF IT_MAILCONTENT OCCURS 0,   PLANT LIKE ZBCFILE-

GET與POST比較-使用HTTP協議將客戶端的請求傳送到伺服器端的方式

1、get是從伺服器上獲取資料,post是向伺服器傳送資料;2、 在客戶端,get方式在通過URL提交資料,資料在URL中可以看到,post方式資料放置在HTML HEADER內提交;3、 對於ge

log4j控制日誌輸出檔名稱的方式

1. 第一種方式 在類物件中用如下方式定義logger變數 private static Logger logger = Logger.getLogger("lemmaXml");這樣通過名稱的方式獲取logger,需要在log4j.properties檔案中定義一個名稱

陣列的初始化方式?初始化常見錯誤

陣列是儲存同一種資料型別多個元素的集合。 a:動態初始化 只指定長度,由系統給出初始化值 格式: * 資料型別[] 陣列名 = new 資料型別[陣列長度]; * int[] arr = new int[5]; b:靜態

HttpClient傳送請求,get和post方式,分別帶引數和不帶引數

(一)、匯入HttpCLient的jar包 <dependencies> <dependency> <groupId>org.apache.httpcomponents</groupId> <arti

curl傳送檔案 post圖片的方式

First Type: curl -F "[email protected]/mnt/shared/Image/jpg/Screensho1t.jpg; filename='Scree