นโยบายการจัดการความรู้ มหาวิทยาลัยสงขลานครินทร์ 1.ให้ใช้เครื่องมือการจัดการความรู้ผลักดัน คุณภาพคน และกระบวนทำงาน 2.ส่งเสริมการแลกเปลี่ยนประสบการณ์การทำงาน จากหน้างาน 3.ส่งเสริมให้มีเวทีเรียนรู้ร่วมกัน
Page Visits: 3070
comment: 3

การเก็บ logfile ของ apache แบบแบ่งเป็นรายวัน

apache accesslog,วิธีแก้ apache access มีขนาดใหญ่

     กราบสวัสดีทุกท่าน ท่ามกลางกระแสการปรับเงินเดือนอันอึมครึม และสวัสดีมิตรรักแฟนเพลง ช่วงนี้ผมยังคงวนเวียนอยู่แถว 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

หมวดหมู่บันทึก: พัฒนางานประจำ
สัญญาอนุญาต: ไม่สงวนสิทธิ์ใดๆ Public_domain
สร้าง: 18 กันยายน 2555 09:30 แก้ไข: 18 กันยายน 2555 09:30 [ แจ้งไม่เหมาะสม ]
Flowers
สมาชิกที่ให้กำลังใจ: Ico24 Our Shangri-La.
สมาชิกที่ให้กำลังใจ
 
Facebook
Twitter
Google

บันทึกอื่นๆ

comment

ของผมเขียนเป็น shell script เอาครับ

งั้นพี่ภัทธพอจะมี shell script แจกใหมครับเผื่อจะได้นำไปใช้มั่งจะได้ไม่ต้องไปเขียน httpd.conf

ผมใช้ package ที่ชื่อว่า logrotate ครับ

ตัวนี้สามารถเลือกที่จะ rotate logfile ใดๆตามความเหมาะสมได้

โดย default แล้ว บน debian (ซึ่งน่าจะรวม ubuntu ด้วย) มันจะ rotate ไฟล์

log และ error ของ apache2 ทุกๆสัปดาห์ และเก็บ log ไว้ 4 สัปดาห์

ผมปรับแก้ให้เก็บได้นาน 1 ปี โดยการเปลี่ยนตัวเลขใน config ไฟล์แค่ตัวเดียว

ผมคิดว่าใช้ logrotate จะดีกว่าครับ สามารถใช้จัดการกับ log ไฟล์ได้อย่างหลากหลาย

ไม่จำกัดเฉพาะ apache log และควบคุมทั้งหมดผ่านจุดควบคุมเพียงจุดเดียวกันครับ

Comment on this Post

Name:
Email:
IP Address: 18.213.192.104
Message:  
Load Editor
   
Cancel or