แสดงบทความที่มีป้ายกำกับ log4j แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ log4j แสดงบทความทั้งหมด

วันพฤหัสบดีที่ 19 กันยายน พ.ศ. 2556

Config slf4j ให้ใช้งานบน JBoss 7

ปกติ ถ้าเรา Config Log4j บน slf4j แล้วจะใช้งานไม่ได้เพราะไม่มีการอ่าน Config จาก Application ครับ
เลยต้อง Config เพิ่มโดย

1. สร้างไฟล์ jboss-deployment-structure.xml
2. Config บอกให้ exclude package เหล่านี้ ตามข้างล่าง

 <?xml version="1.0" encoding="UTF-8"?>  
 <jboss-deployment-structure>  
  <deployment>  
   <exclusions>  
     <module name="org.apache.log4j" />  
     <module name="org.slf4j" />  
     <module name="org.slf4j.impl" />  
   </exclusions>  
  </deployment>  
 </jboss-deployment-structure>  

วันพฤหัสบดีที่ 20 ธันวาคม พ.ศ. 2550

Basic Config Log4J without properties File

การ Config แบบที่ไม่ใช้ properties File เราจะใช้ Class Properties ในการ Set แทนนน่ะครับ โดยเราจะ Config เหมือน Properties File เลยครับ คือ ถ้าอยู่ทางขวาของ "=" จะเป็น Key ส่วนทางซ้ายเป็น Value ครับ ข้างล่างเป็นตัวอย่างประมาณนี้น่ะครับ

Example
Properties properties = new Properties();
properties.put("log4j.logger.test","DEBUG,test");
properties.put("log4j.appender.test","org.apache.log4j.DailyRollingFileAppender");
properties.put("log4j.appender.test.DatePattern","'.'yyyy_MM_dd");
properties.put("log4j.appender.test.File","C:/TEMP/a.log");
properties.put("log4j.appender.test.layout","org.apache.log4j.PatternLayout");
properties.put("log4j.appender.test.layout.ConversionPattern","[Test] [%d{dd/MM/yyyy HH:mm:ss,SSS}] (%c:%L) - %5p - %m%n");
PropertyConfigurator.configure(properties);

วันศุกร์ที่ 15 มิถุนายน พ.ศ. 2550

Basic Config Log4J

จะสอนวิธีใช้งานแบบง่ายๆ ของ Log4J นะครับ ว่าจะ Config ยังไงดี ซึ่งเราจะ Config ใน log4j.properties นะครับ Parameter ที่น่าจะรู้

log4j.rootCategory เป็นการกำหนด Log ทั้งหมดของเราว่าจะให้มีระดับเท่าไร ซึ่งใน Log4J จะมีระดับดังนี้ info, warn, debug and fatal
log4j.logger.package เป็นการกำหนดว่าจะให้ที่อยู่ในชื่นี้ทั้งหมดอยู่ในระดบไหน [ตรง Package ให้กำหนดเป็นชื่อหรือ Package ของ Class เราก็ได้ว่าจะให้มันอยู่ในระดับใดของ Log4J]
log4j.appender.package กำหนดว่าจะให้ Log ออกแบบไหน เช่นลงไฟลล์หรือเปล่า
log4j.appender.package.DatePattern เป็นรูปแบบของไฟลล์ว่าพอหมดวันแล้วจะเก็บรูปแบบไหน
log4j.appender.package.File กำหนัดว่าไฟลล์จะชื่ออะไร วางไว้ที่ไหน
log4j.appender.package.MaxFileSize ความจุมากสุดของในแต่ละไฟลล์ ถ้าในวันนึงเกินจะหั่นไฟลล์ออกมา
log4j.appender.package.layout จะให้ Pattern เป็นแบบไหน
log4j.appender.package.layout.ConversionPattern กำหนดรูปแบบว่าจะให้โชว์อะไรบ้าง


ข้างล่างเป็นตัวอย่าง อย่างง่ายๆ ครับ

log4j.rootCategory = Info, stdout //บอกว่าให้ Log ทั้งหมดที่ระดับต่ำกว่า Info ไม่ต้องเอามาแสดง ส่วน stdout คือ System.out
log4j.appender.stdout = org.apache.log4j.ConsoleAppender //เป็นการบอกว่าออกที่ Console
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout //Pattern
log4j.appender.stdout.layout.ConversionPattern = ...[ABC Project]... [%d{dd/MM/yyyy HH:mm:ss,SSS}] (%c:%L) - %5p - %m%n//รูปแบบของการออกโดย จะเป็นดังนี้ ... [ABC Project]... [รูปแบบของวันที่จะเป็น วัน/เดือน/ปี ชั่วโมง:นาที:วินาที,ไมโครวินาที] (ชื่อเต็มเช่น ชื่อ Class รวมกับ Package ทั้งหมด:บรรทัดที่รัน) - Level ของ Log

log4j.logger.com.true_corp.connector = DEBUG,connectorlog //เป็นการบอกว่า Log ที่อยู่ใน Package com.true_corp.connector ทั้งหมดจะมีระดับ Log ที่ Debug แล้วตัวข้างหลังบอกว่าใช้เป็นตัวแปรชื่อนี้
log4j.appender.connectorlog = org.apache.log4j.DailyRollingFileAppender //กำหนดให้ connectorlog เก็บลงไฟลล์
log4j.appender.connectorlog.DatePattern = '.'yyyy_MM_dd //มีรูปแบบของวันเป็น ปี_เดือน_วัน
log4j.appender.connectorlog.File = C:/Connector.log //ลงไฟลล์ชื่อ Connector.log
log4j.appender.connectorlog.MaxFileSize = 10000KB //ขนาดไฟลล์สูงสุดคือ 10 Mb ถ้าเกินจะขึ้นไฟลล์ใหม่
log4j.appender.connectorlog.layout = org.apache.log4j.PatternLayout
log4j.appender.connectorlog.layout.ConversionPattern = ...[Temp Log]... [%d{dd/MM/yyyy HH:mm:ss,SSS}] (%c:%L) - %5p - %m%n

วันอังคารที่ 5 มิถุนายน พ.ศ. 2550

Config Log4j บน Websphere 6.x

โดยปกติ ถ้าใช้บน Tomcat เราไม่ต้อง Config แค่เอาไปวางไว้ใน WEB-INF มันก็จะวิ่งไปอ่าน log4j ให้แต่บน Websphere 6.x มันจะม่อ่านเราเลยต้องใช้วิธีบอกตำแหน่งให้มันอ่านเลย ซึ่งทำดังนี้


//ไว้บอกตำแหน่งของ file log4j.properies
String log4j = getServletContext().getRealPath("/WEB-INF/log4j.properties");

//Config Properties File ว่าอ่านที่ตรงนี้
PropertyConfigurator.configure(log4j);


หมายเหตุ ถ้าใช้วิธีนี้จะทำให้ทั้ง Server ใช้ Config นี้ทั้งหมดเพราะฉะนั้นจะต้องเอา Config ของทุก Application มาไว้ใน lo4j.properties ที่เดียวกัน