หลังจากครั้งก่อน เราสร้างแอปขึ้นไปรันบน heroku แล้ว ตอนนี้ผมจะพูดถึงวิธีการดู logs ของแอปเรา ว่ามีใครเข้ามาดู ใครเรียกหน้าไหน หรือมี error อะไรบ้าง ผมจะแก้โค้ดเพิ่มเติม เพื่อดูว่า มีการเรียกใช้หน้าที่แตกต่างกัน จะได้อะไรบ้าง

@app.route('/home/<name>')
def home(name):
    return 'Hello, %s' % name

@app.route('/error')
def error():
    return hello_world

ดูโค้ดที่เพิ่มเข้าไปผ่าน git diff hello.py ก็ได้

git diff hello.py
เมื่อแก้โค้ดเสร็จแล้วให้ลองรันแอปด้วย foreman start ถ้าไม่มีอะไรผิดพลาดจะรันแอปได้ จากนั้นเราก็จะ push โค้ดที่แก้ไขไปยัง heroku server โดยการ commit โค้ดเข้า git จากนั้นก็ push โค้ดไปเหมือนตอนแรก
$ git add .
$ git commit -m 'add profile feature'
$ git push heroku master

push changed code
เรามาดู logs กันให้เปิดไปที่แอปของเรา heroku open จากนั้นก็รันคำสั่ง heroku logs เราก็ได้จะได้ logs เหมือนในรูป
heroku logs

heroku logs มันจะอ่าน logs มาแล้วจบเลย ถ้าเราอยากดูต่อขณะที่มีคนเข้ามาใช้แอปเรา ก็ทำได้โดยการเพิ่ม --tail, -t
$ heroku logs -t

heroku logs -t

จะเห็นว่า มีการเรียกไปที่ path ต่างๆ พร้อมกับ HTTP error code ถ้าเรียกไปที่ /error ก็ได้เห็นหน้า Internal Server Error แต่ไม่มีการแจ้งว่า error เพราะอะไร อันนี้ให้เราไปแก้ที่แอปของเราให้เป็น debug mode ด้วยการเพิ่ม app.debug = True ลงไปใน hello.py

...
app = Flask(__name__)
app.debug = True
...

จากนั้นก็ commit, push โค้ดไปยัง heroku server แล้วเรียกไปที่หน้า /error ดู ก็ได้เห็นว่า error เพราะอะไร
$ heroku logs -t
app.debug = True, logs -t

เมื่อเราเห็นแล้วว่า error เพราะอะไร ก็แก้ให้เสร็จ แล้ว commit, push โค้ดไปใหม่ แต่วิธีที่ดีกว่าการ push ไปเพื่อทดสอบ ให้เราทดสอบบนเครื่องตัวเองผ่าน foreman ก่อนจะดีกว่า เพราะไม่ต้องรอ push โค้ด อาจจะใช้เวลานาน

foreman error message

จบแล้วครับวิธีการดู logs พอจะเห็นประโยชน์ของการดู logs บางหรือเปล่าครับ ถ้าใครงงๆว่าดูไปทำไม ให้มองกรณีตัวอย่าง /error ในตอนแรก เราไม่รู้เลยว่า ทำไมมัน error และ error เพราะอะไร ถ้าเราไม่รู้ เราก็จะแก้ไม่ได้ครับ เราไม่ได้ใช้ IDE ที่มันจะช่วยแจ้งให้เราเห็นอย่างชัดเจนเราก็ใช้วิธีแบบนี้แทน ดูเพิ่มเติมเกี่ยวกับ logsได้ที่ https://devcenter.heroku.com/articles/logging

คราวหน้าจะมาต่อเรื่อง dynos มันคืออะไรโปรดติดตามชม

Comments are closed.