ความเห็น: 3
การเก็บ logfile ของ apache แบบแบ่งเป็นรายวัน
กราบสวัสดีทุกท่าน ท่ามกลางกระแสการปรับเงินเดือนอันอึมครึม และสวัสดีมิตรรักแฟนเพลง ช่วงนี้ผมยังคงวนเวียนอยู่แถว apache webserver เพราะยังมีอะไรอีกหลายอย่างที่ยังเรียนรู้ไม่หมด คาดว่าคงเอามาเขียนเป็นบันทึกกันลืมได้อีกยาว วันนี้มาพูดกันถึงเรื่องของ logfile ครับ ใครที่ใช้ apache แล้วไม่ได้ไปแก้ค่าให้ตัว apache สร้าง logfile แบบวันต่อวันคงต้องปวดหัวเรื่อง accesslog ของเจ้าตัว apache อยู่ไม่น้อยเพราะมันจะมีขนาดใหญ่ขึ้นทุกวันจนต้องหาโปรแกรมที่สามารถเปิดดู log ขนาดใหญ่ได้ เช่น apachelogviewer ซึ่งจริงๆแล้วเราสามารถกำหนดให้ apache สร้าง logfile เป็นรายวันได้ด้วยการแก้ไขเพียงบรรทัดเดียวในไฟล์ httpd.conf ดังต่อไปนี้
1.ต้องมี rotatelogslogs ก่อน (ส่วนมากจะอยู่ใน bin แต่คาดว่าน่าจะมีทุกคน)
2.เปิดไฟล์ httpd.conf มาแล้วก็แก้
เป็น linux ก็
CustomLog "|bin/rotatelogs /var/logs/logfile 86400" common //สร้าง logfile การใช้งาน 86400 วินาที (24 ชั่วโมง)
CustomLog "|bin/rotatelogs -l /var/logs/logfile.%Y.%m.%d 86400" common //สร้าง logfile โดยเครื่องหมาย . ในที่นี้คือตัวคั่นระหว่างชื่อไฟล์เช่น logfile.2012.09.18 ก็จะได้ประมาณนี้ครับ
CustomLog "|bin/rotatelogs /var/logs/logfile 5M" common //อันนี้กำหนดขนาดของ logfile ไม่ให้เกิน 5 M
ErrorLog "|bin/rotatelogs /var/logs/errorlog.%Y-%m-%d-%H_%M_%S 5M"
//อันนี้กำหนดขนาดของ logfile ไม่ให้เกิน 5 M พร้อมทั้งใส่ปีเดือนวันและเวลา
เป็น windows ก็
CustomLog "|bin/rotatelogs.exe logs/access.%y-%m-%d.log 86400" common //ก็จะได้เป็นชื่อไฟล์ เช่น access.2012-09-18.log
พอแก้เสร็จแล้วให้ save แล้ว restart service apache ครับ
*ข้อควรระวัง*
เวลาแก้ไขให้ใช้วิธีใส่เครื่องหมาย # ไว้หน้าคำสั่งเก่าเช่น เพื่อป้องกันความผิดพลาดหากเราเขียนเครื่องหมายผิดไป service apache มันจะไม่ยอม start ให้นะครับ
#CustomLog logs/access.log common Modify by champ 9:35 170955
CustomLog "|bin/rotatelogs.exe logs/access.%y-%m-%d.log 86400" common
ขอให้ภาระกิจลุล่วงครับ ^^
อ้างอิง
http://httpd.apache.org/docs/2.2/programs/rotatelogs.html
บันทึกอื่นๆ
- เก่ากว่า « การปรับแต่งค่า robots.txt ใน joo...
- ใหม่กว่า » การปรับตั้งค่า virtual host บน a...
ความเห็น
ผมใช้ package ที่ชื่อว่า logrotate ครับ
ตัวนี้สามารถเลือกที่จะ rotate logfile ใดๆตามความเหมาะสมได้
โดย default แล้ว บน debian (ซึ่งน่าจะรวม ubuntu ด้วย) มันจะ rotate ไฟล์
log และ error ของ apache2 ทุกๆสัปดาห์ และเก็บ log ไว้ 4 สัปดาห์
ผมปรับแก้ให้เก็บได้นาน 1 ปี โดยการเปลี่ยนตัวเลขใน config ไฟล์แค่ตัวเดียว
ผมคิดว่าใช้ logrotate จะดีกว่าครับ สามารถใช้จัดการกับ log ไฟล์ได้อย่างหลากหลาย
ไม่จำกัดเฉพาะ apache log และควบคุมทั้งหมดผ่านจุดควบคุมเพียงจุดเดียวกันครับ
18 กันยายน 2555 12:21
#80573
ของผมเขียนเป็น shell script เอาครับ