Internship weak 4# at Thomson Reuters (Thailand) – Create Logger using Trace Listener in C#

วันนี้ตื่นสายมา 9.30  T_T  มาถึงก็ซัดข้าวหมูกรอบหน้า 7-11 ข้างๆตึกก่อนเลย 35 บาืท  ขึ้นมาถึงก็แชตกับเพื่อน

http://www.daveoncsharp.com/2009/09/create-a-logger-using-the-trace-listener-in-csharp/

Trace Listener in C# / การสร้าง Log file โดยใช้ Trace Listener ใน C#

เมื่อเราสร้าง application เพื่อใช้ในโลกของธุระกิจ     มีความจำเป็นมากที่ application  สามารถที่จะ log error ไว้ได้   แล้วถามว่าทำเพื่ออะไำร   ก็เพราะ  เมื่อเวลาที่เราส่งโปรแกรมให้ลูกค้าใช้งาน  เมื่อมีเหตุการณ์ที่มีการ error เกิดขึ้น  ลูกค้าจะไม่รู้เลยว่า error เพราะอะไร จะต้องคุยกันยาวเหยีดกับลูกค้าที่ไม่รู้เรื่อง error     ดังนั้นเมื่อมี log file  เราสามารถที่จะให้มัน ส่ง log error ที่ได้กลับมาให้เรา  และเราจะรู้ถึงปัญหาได้ทันที  โดยที่คุยกับลูกค้านิดเดียว หรือไม่คุยเลย

Log file นั้นสามารถเก็บไว้ได้หลายรูปแบบ เช่น Database, Text file, หรือ เป็น event ของ Windows EventLog ก็ได้       แต่มีอยู่เครื่องมือหนึ่งที่จะช่วยให้เราสร้าง log file ได้ง่ายๆ ที่อยู่ใน .NET framework เป็นกลไกที่เรียกว่า TraceListener

Trace Listener ก็คือ object ที่ใช้สำหรับดักจับ error ที่เกิดขึ้น แล้วทำการ trace output ออกมาในรูปแบบที่เราต้องการ   ในตัวอย่างนี้  เราจะแสดงวิธีการใช้่งาน TraceListener ในการบันทึก error ในโปรแกรมของเราลงใน error log file

ลงมือทำ

เริ่มแรกให้เราสร้าง Console Application  และ add App.config gile เข้าใน project เราจะใช้ App.config นี้ในการที่จะบอกapplication ของเราว่าให้ทำการสร้าง trace listener ตอนรันโปรแกรม   ให้เราทำการแก้ไข code ใน App.config  ให้เป็นแบบด้านล่างนี้

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.diagnostics>
    <trace autoflush="true" indentsize="4">
      <listeners>
        <add name="myListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="application.log" />
        <remove name="Default" />
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

จาก code จะเห็นว่าเราทำการ add System.Diagnostics.TextWriterTraceListener ใช้เป็นตัวสำหรับเขียน log file ให้ และ application.log เป็นชืื่อไฟล์ log ของเรานั่นเอง   คราวนี้ดูที่ node <trace> จะเห็นว่าเรากำหนด attribute autoflush ให้เป็น true เพื่อเป็นการให้ clear bffer หลังจากได้ทำการเขียน log ลงในไฟล์แล้ว      สำหรับการจะ set เป็น true หรือ false  นั้นก็ขึ้นอยู่กับความเหมาะสมของหน่วยความจำของเครื่อง

ดังนั้นใน static Main  เราจะมีวิธีการเรีัยกใช้ Trace กะง code ตัวอย่าง

static void Main(string[] args)
{
 Trace.WriteLine("Application started.", "MyApp");

 Trace.WriteLine("working...", "MyApp");

 Trace.WriteLine("Application finished.", "MyApp");
}

และเมื่อเราลองดูข้อมูลในไฟล์ application.log จะเห็นข้อมูลที่ถูกสร้างขึ้นมาอัตโนมัติจาก listener หลังจากที่เีรา run โปรแกรม  ดังไฟล์นี้

MyApp: Application started.

MyApp: working...

MyApp: Application finished.

จะเห็นว่าการสร้าง log file โดยวิธีนี้ง่ายมากโดยที่เราไม่จำเป็นต้องใช้ filestream ในการเขียนไฟล์เลยแม้แต่น้อย

One comment on “Internship weak 4# at Thomson Reuters (Thailand) – Create Logger using Trace Listener in C#

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s