首頁

目前文章總數:157 篇

  

最後更新:2024年 12月 07日

0026. log4net 發送Email的方法,使用Gmail為範例

日期:2020年 09月 16日

標籤: Log4net C# Asp.NET Framework Windows Forms

摘要:C# 學習筆記


應用所需: Visual Studio 2019 - 範例專案 WindowsForm (.net Framework)
解決問題: 使用Log4net套件,紀錄Log時發送Email 到google的gmail中
範例檔案:連結
實作必須:1. Google Gmail 的信箱
     2. Twilio帳號
基本介紹:本篇分為3大部分。
第一部分:Log4net的安裝
第二部分:使用Log4net發送Mail需完成的三個設定
第三部分:實際發送






第一部分:Log4net的安裝

Step 1:先建立一個專案,這邊使用的是.netframeWork 4.7.2 的WindowsForm的專案

然後於參考 -> 按下滑鼠右鍵 -> 管理NuGet套件


Step 2: 安裝

瀏覽 -> 輸入log4net -> 點擊安裝




第二部分:使用Log4net發送Mail需完成的三個設定

Step 1: 對App.Config設定


1. App.Config 點開
2. 在以下section內插入黃框的代碼

<Configuration>
</Configuration>




Step 2: XML代碼

如下,可以直接貼上

<configSections>
      <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    </configSections>
    <log4net>
      <root>
        <level value="ALL" />
        <appender-ref ref="SmtpAppender" />
      </root>
      <!-- 寫入傳送E-Mail設定開始 -->
      <appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
        <to value="capXXXX@gmail.com" />
        <from value="capXXXX@gmail.com" />
        <subject value="Send log4net E-Mail測試" />
        <smtpHost value="smtp.gmail.com" />
        <authentication value="Basic" />
        <port value="587" />
        <username value="輸入自己的發送Mail帳號" />
        <password value="輸入自己的發送Mail密碼" />
        <bufferSize value="10" />
        <EnableSsl value="true"/>
        <lossy value="true" />
        <threshold value="DEBUG" />
        <evaluator type="log4net.Core.LevelEvaluator">
          <threshold value="INFO"/>
        </evaluator>
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date{dd/MM/yyyy hh:mm:ss.fff}&#9;%-5level&#9;%-15logger&#9;%message%newline" />
        </layout>
      </appender>
    </log4net>



Step 3: 指定要用log4net的Smtp發送

以下



Step 4: 重要參數說明


XML參數項目 說明
<to></to> 字段是發送對象的信箱
<from></from> 字段是發送來源,通常是填寫發送者的信箱
<username></username> 是輸入自己的帳號,如我的gmail信箱是 hello@gmail.com 那麼我的帳號就是 hello
<password></password> 是輸入自己的帳號對應的密碼
<evaluator></evaluator> 是log會送Email的層級,這邊設定是Info
<layout></layout> 是發送郵件的內容格式,依這個格式會類似=> 日/月/年 時:分:秒 紀錄層級 物件名稱 紀錄內容





Step 5: 添加 Assembly 組件的設定


1. 先開啟 AssemblyInfo.cs 的檔案
2. 增加以下代碼,使Log4net生效

[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)]





Step 6:Google帳號,需開啟發送郵件的應用權限

如下圖,先登入到自己要發送Mail的Google帳號,登入後
1. 左邊選擇 “安全性”
2. 拉到畫面最下面的=> 低安全性應用程式存取權
3. 點擊 => 開啟存取權 (不建議)
※因為我們要允許應用程式透過這個帳號發送Mail,所以要開啟,之後不用了可以隨時關閉

[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)]




Step 7:點擊黑框

請點擊黑框的部分,使其變成3.3畫面


Step 8:此時是已開啟的狀態






第三部分:實際發送

Step 1: 進行Log4net的發送的測試


1. 點擊 Form.cs 開啟代碼
2. 輸入以下兩行代碼,如下圖

 private static readonly log4net.ILog log = log4net.LogManager.GetLogger("Log4net發送Mail測試工具");
log.Info("今天天氣不錯");


3. 執行程式碼後即可去信箱收信


Step 2: 信箱可以看到以下信件

可以看到今天天氣不錯