- เพิ่ม 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.