จาก Blog ตอนก่อนของ Site ได้ Deploy ตัว .Net App ไว้ที่ Windows Server ไว้ที่ Drive C: แล้วให้ User Remote เข้ามาใช้งานครับ แต่พอเวลามีปัญหามันดัน Write Log ไม่ได้ครับ เพราะ Application ทุกตัวที่ที่รันขึ้นมา ดันเขียน Log ลงไปที่ Path และไฟล์ชื่อเดียวกันครับ ทำให้ User สามารถเปิดโปรแกรมใช้งานได้แค่ 1 Instance เท่านั้นครับ เมื่อทาง Dev ต้องการหาสาเหตุของ Defect บางข้อครับ แต่เรื่องนี้มันก็ขัดใจสำหรับ User มากๆ ที่ไม่สามารทำงานได้ครับ
สำหรับทางแก้ - ใช้ Log4Net มันเขียน Log File ตาม Process Id ของ exe ที่เปิดอยู่ครับ โดยสามารถไปแก้ที่ตัว Appender ได้ ดังนี้
- ของเดิม - ที่ RollingLogFileAppender เขียน Log โดยระบุชื่อไฟ์ไปตรงๆเลยครับ
<file value="C:\\Ext\\Log\\EXTENSION_LOG.txt" />
- ของใหม่ - มีการปรับที่ RollingLogFileAppender ให้ Log มันเข่ียนแยกตามไฟล์ โดยใช้ Log4Net Pattern String ครับ ซึ่งมีการกำหนด Pattern จาก Process Id ของ exe ที่ เปิดอยู่ในหน้าจอ Task Manager ครับ โดยดึง Process Id จาก Config [%processid] ส่วนวันที่อันนี้ผมเพิ่มเองครับ จะได้ดู Log ง่ายๆ โดยกำหนด Config ดังนี้ %utcdate{yyyy-MM-dd}
<file type="log4net.Util.PatternString" value="C:\\Ext\\Log\\EXTENSION_LOG-%utcdate{yyyy-MM-dd}-[%processid].txt" />สำหรับตัว Appender เต็มๆครับ
โดยการเดิม [%processid] ลงไปใน value ที่กำหนด Path และชื่อไฟล์ ในส่วนของ PatternString
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="C:\\Ext\\Log\\EXTENSION_LOG-%utcdate{yyyy-MM-dd}-[%processid].txt" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<datePattern value="yyyyMMdd" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="1MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level (%file:%line) [%property{NDC}] - %message%newline" />
</layout>
</appender>ตัวอย่างชื่อของ Log File ที่ได้มาครับ
- EXTENSION_LOG-2018-04-16-[4588] โดยเป็น Log ของ Application Extension ณ วันที่ 2018-04-16 และมี Process Id = 4588
Reference
Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.



