Wednesday, February 20, 2008

จะใช้ Log4j ในพอท์เล็ตยังไง (Adding Logging to a Portlet?)

เคยใช้ System.out อยู่พักหนึ่ง รู้สึกว่า Performance มันตกๆ ไงไม่รู้
เลยลองเปลี่ยนมาใช้กับ Log4j ดู อาจจะช่วยได้ (รึป่าว) ^_^!

มาดูวิธี Set กันนะครับ

1. ก่อนอื่นก็ต้องไปดาวน์โหลด log4j มาก่อนสิ ไปที่นี่นะ http://logging.apache.org/log4j/1.2/download.html

2. เมื่อเราโหลดได้แล้ว แตกไฟล์มา จะมีเยอะมากมาย ให้หาไฟล์ นามสกุล .jar
มันจะอยู่นอกสุดอะครับ
เช่น
แตก zip มาจะได้ directory ชื่อ apache-log4j-1.2.15
c:/apache-log4j-1.2.15/log4j-1.2.15.jar

3. นำไฟล์ log4j-1.2.15.jar ที่ได้ไปวางไว้ใน path /WEB-INF/lib ของ Portlet นะ

4. จากนั้นสร้างไฟล์ log4j.properties โดยสร้างไฟล์นี้ไว้ ภายใต้ directory นี้
JavaResources/JavaSource

5. จากนั้นแก้ไขค่าในไฟล์ log4j.properties ตัวอย่างเช่น

# An example log4j configuration file.
log4j.rootLogger=DEBUG, FILE
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=C:/log/SSOApplicationPortlet.log
log4j.appender.FILE.Append=true
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[%-d{yyyy-MM-dd HH:mm:ss}] [%37c] %3x - %m%n

อยากได้รายละเอียดการใช้เพิ่มเติม ไปที่นี่นะครับ
http://logging.apache.org/log4j/1.2/manual.html

6. มาดู Portlet ของเราต่อ เมื่อเราเตรียมการใช้งาน Log4j เสร็จแล้ว เราจะมาดูการเรียกใช้ต่อนะ

7. ใน Class ที่เราต้องการ Debug หรือ จะเก็บ Log ให้เรา Import อันนี้เข้าไป

import org.apache.log4j.Logger;

จากนั้น ประกาศตัวแปร Global เพื่อเรียกใช้งาน log ดังนี้

private static Logger logger = Logger.getLogger(ชื่อClassPortlet.class);

และก็มาถึงการ out out outttttt log กัน อยาก เก็บดู Log ตรงไหน ให้ใช้แบบนี้

System.out.println("Start doView()"); // ไม่ใช้ละนะ

logger.debug("Start doView()"); // ใช้แบบนี้เอา

8. เสร็จแล้วการใช้งาน Log4j ถ้าจะไปดู output ก็ไปดูที่ path ที่เรา Set ไว้ใน log4j.properties นะครับ



ใช้งานแล้วเป็นยังไงกันมั่ง บอกกันด้วยนะ

1 comment:

ความฝัน ความเชื่อ ความรัก said...

ขอบคุณมากครัผบม..
สำหรับคำแนะนำทำให้เข้าได้เยอะเลย ..