- เพิ่ม Reference ชื่อ System.Configuration
- กำหนด path ที่ใช้เก็บ Log
- สร้างคลาส LogClass
- Program.cs
1.เพิ่ม Reference ชื่อ System.Configuration
ที่ Solution Explorer
ใต้โปรเจ็กส์ ให้คลิกขวาที่ References
เลือก Add Reference…
จะเห็นไดอะล็อก Reference Manager
เลือก Assemblies
พิมพ์ค้นหาด้วยคำว่า configuration
เลือก System.Configuration แล้วคลิก OK
2.กำหนด path ที่ใช้เก็บ Log
App.config
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> </startup> <appSettings> <add key="LogPath" value="\log\" /> </appSettings> </configuration>
บรรทัดที่ 8: กำหนด path ที่ต้องการเก็บไฟล์ log
3.สร้างคลาส LogClass
สร้างโฟลเดอร์ mylib ไว้เก็บคลาส จากนั้นสร้างไฟล์ mylib/LogClass.cs
mylib/LogClass.cs
using System; using System.Configuration; using System.Globalization; using System.IO; namespace ConsoleApp1.mylib { class LogClass { private static void Log(string logMessage) { string logPath = AppDomain.CurrentDomain.BaseDirectory + ConfigurationManager.AppSettings.Get("LogPath"); // path if (!Directory.Exists(logPath)) Directory.CreateDirectory(logPath); string filename = logPath + DateTime.Today.ToString("yyyy-MM-dd", new CultureInfo("en-US")) + ".log"; // filename using (StreamWriter w = File.AppendText(filename)) { w.WriteLine("[{0}] {1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss", new CultureInfo("en-US")), logMessage); } } public static void writeApplicationName() { Log("==================================================================="); Log(AppDomain.CurrentDomain.FriendlyName); } public static void writeLogMethod(string message) { Log(" " + message); } public static void writeLogDetail(string message) { Log(" " + message); } public static void writeResponse(string message) { Log("------------------------"); Log("Response : " + message + "\n"); } } }
AppDomain.CurrentDomain.BaseDirectory จะคืนค่า path ของโปรแกรมที่รัน (.exe)
เสมอ แต่ถ้าเป็น Environment.CurrentDirectory จะคืนค่า path ของ Environment ที่ใช้รัน ซึ่งอาจจะไม่ใช่ตำแหน่งที่ไฟล์นั้นอยู่ (เช่นเมื่อรันด้วย Schedule Task ของ Windows)
4.Program.cs
Program.cs
using ConsoleApp1.mylib; namespace ConsoleApp1 { class Program { static void Main(string[] args) { LogClass.writeApplicationName(); FirstMethod(); } static void FirstMethod() { LogClass.writeLogMethod(System.Reflection.MethodBase.GetCurrentMethod().Name); LogClass.writeLogDetail("do somethings."); LogClass.writeResponse("Finish methods."); } } }
ตัวอย่างผลลัพธ์ไฟล์ log/2019-01-22.txt
[2019-01-22 22:38:06] ================================== [2019-01-22 22:38:06] ConsoleApp1.exe [2019-01-22 22:38:06] FirstMethod [2019-01-22 22:38:06] do somethings. [2019-01-22 22:38:06] ------------------------ [2019-01-22 22:38:06] Response : Finish methods.