Views: 0
有人看到部落格內容問的,這塊有幾個做法
- 使用官方建議作法
Ede.Utility.Log.Logger - 使用
Nlog(Eip的bin本身有nlog 4.4.2版可以用),不過用起來有點麻煩 - 用客製導入廠商自己寫的的Log系統(例如冠永騰的)
- 其他作法,例如寫
txt
不過我這篇目前只教官方提供的, Ede.Utility.Log.Logger 我任職的公司用的是冠永騰客製的,也許我有空也可以寫一篇冠永騰客製的作法。
Ede.Uof.Utility.Log.Logger 用法
官方的 系統開發手冊(底層) 其實有這個章節,在這個章節:

官方手冊有寫的大致上是這幾個
Write(LOG分類,訊息,參數[]);Write(LOG分類,訊息);WriteError(錯誤訊息內容)getFilPath(Log類型);GetLog(LOG類型,時間,事件ID);
基本上我只用2跟3而已,想看Log不需要自己寫工具,到系統管理>檢視事件 就能看了
檔案位置在於網站目錄下的AppData\Log\日期\

對應在AppData的目錄下,如果想改只能改Web.config的App_Data的對應目錄設定FileStorageFolder

Ede.Uof.Utility.Log.Logger.Write("自訂分類名稱",$"錯誤訊息 {ex}");
這邊可以自己訂分類,例如我想記錄訪客通知排程GuestTask,我的Log分類就直接叫做GusetTask
using Ede.Uof.Utility.Log; //選用
//其他程式碼
try{
//其他程式碼...
}
catch(Exception ex)
{
Ede.Uof.Utility.Log.Logger.Write("自訂分類名稱",$"錯誤訊息 {ex}");
}
紀錄錯誤訊息大致上是這樣寫
using Ede.Uof.Utility.Log; //選用
//其他程式碼
try{
//其他程式碼...
}
catch(Exception ex)
{
Ede.Uof.Utility.Log.Logger.WriteError($"錯誤訊息 {ex}"); //這邊會直接寫到ErrorLog
}
範例1 Logger.Write
這邊我們可以寫一個測試器來玩玩
我在CDS資料夾下新增一個LogTest,然後新增一個頁面


這邊就看自己需要命名就好,我們這裡寫一個測試的加減用

程式碼 LogTest.aspx 前端
<%@ Page Title="" Language="C#" MasterPageFile="~/Master/DefaultMasterPage.master" AutoEventWireup="true" CodeFile="LogTest.aspx.cs" Inherits="CDS_LogTest_LogTest" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<table class="PopTable">
<tr>
<td>LOG分類</td>
<td>
<asp:TextBox runat="server" ID="txtLogType"/>
</td>
</tr>
<tr>
<td>LOG內容</td>
<td>
<asp:TextBox runat="server" ID="txtLogContent" TextMode="MultiLine"/>
</td>
</tr>
<tr>
<td></td>
<td>
<asp:Button runat="server" id="btnWrite" OnClick="btnWrite_Click" Text="寫入Log"/>
<asp:Label ID="lblMsg" runat="server" ForeColor="Red"/>
</td>
</tr>
</table>
</asp:Content>
程式碼 LogTest.aspx.cs 後端
using System;
/// <summary>
/// Log測試頁面
/// </summary>
public partial class CDS_LogTest_LogTest : Ede.Uof.Utility.Page.BasePage
{
protected void Page_Load(object sender, EventArgs e)
{
}
/// <summary>
/// 寫入Log
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnWrite_Click(object sender, EventArgs e)
{
Ede.Uof.Utility.Log.Logger.Write(txtLogType.Text,txtLogContent.Text);
lblMsg.Text = "寫入Log完成";
}
}
測試

如何觀看Log

系統管理 > 檢視事件

範例2 Logger.WriteError
這邊沿用原本頁面,我們增加藍未來測試寫入Error

程式碼 前端
<%@ Page Title="" Language="C#" MasterPageFile="~/Master/DefaultMasterPage.master" AutoEventWireup="true" CodeFile="LogTest.aspx.cs" Inherits="CDS_LogTest_LogTest" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<table class="PopTable">
<tr>
<td>LOG分類</td>
<td>
<asp:TextBox runat="server" ID="txtLogType"/>
</td>
</tr>
<tr>
<td>LOG內容</td>
<td>
<asp:TextBox runat="server" ID="txtLogContent" TextMode="MultiLine"/>
</td>
</tr>
<tr>
<td></td>
<td>
<asp:Button runat="server" id="btnWrite" OnClick="btnWrite_Click" Text="寫入Log"/>
<asp:Label ID="lblMsg" runat="server" ForeColor="Red"/>
</td>
</tr>
<tr>
<td>Error LOG內容</td>
<td>
<asp:TextBox runat="server" ID="txtErrorContent" TextMode="MultiLine"/>
</td>
</tr>
<tr>
<td></td>
<td>
<asp:Button runat="server" id="btnWriteError" OnClick="btnWriteError_Click" Text="寫入Log"/>
<asp:Label ID="lbMsgError" runat="server" ForeColor="Red"/>
</td>
</tr>
</table>
</asp:Content>
程式碼 後端
using System;
/// <summary>
/// Log測試頁面
/// </summary>
public partial class CDS_LogTest_LogTest : Ede.Uof.Utility.Page.BasePage
{
protected void Page_Load(object sender, EventArgs e)
{
}
/// <summary>
/// 寫入Log
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnWrite_Click(object sender, EventArgs e)
{
Ede.Uof.Utility.Log.Logger.Write(txtLogType.Text,txtLogContent.Text);
lblMsg.Text = "寫入Log完成";
}
/// <summary>
///寫入錯誤Log
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnWriteError_Click(object sender, EventArgs e)
{
Ede.Uof.Utility.Log.Logger.WriteError(txtErrorContent.Text);
lbMsgError.Text = "寫入Error Log完成";
}
}
看LOG
同樣的 系統管理 > 檢視事件


0 Comments