* ȸ¿ø°¡ÀÔ * ¾ÆÀ̵ð/ºñ¹Ð¹øÈ£ ã±â   ID PW
Last Modified : 2008.05.11

·Î±ë(Logging)

·Î±ë(Logging)À̶õ ÇÁ·Î±×·¥ °³¹ßÀ̳ª ¿î¿µ ½Ã ¹ß»ýÇÏ´Â ¹®Á¦Á¡À» ÃßÀûÇϰųª ¿î¿µ »óŸ¦ ¸ð´ÏÅ͸µ Çϱâ À§ÇÑ ÅØ½ºÆ® ÇüÅÂÀÇ µ¥ÀÌÅ͸¦ ¸»ÇÕ´Ï´Ù.

ÀÚÄ«¸£Å¸ Commons ·Î±ë

¾ÆÆÄÄ¡ ±×·ìÀÇ ÀÚÄ«¸£Å¸ commons-logging ÆÑŰÁö´Â °³¹ßÀڵ鿡°Ô °øÅë ·Î±ë API¸¦ Á¦°øÇϱâ À§ÇØ ¸¸µé¾îÁø ÇÁ·¹ÀÓ¿öÅ©·Î ¾ÖÇø®ÄÉÀ̼ÇÀÌ Æ¯Á¤ ·Î±ë API¿¡ Á¾¼ÓµÇ´Â °ÍÀ» ¸·¾ÆÁÝ´Ï´Ù. ÇöÀç ¸¹Àº ¼­µå ÆÄƼ ·Î±ë ÇÁ·¹ÀÓ¿öÅ©µéÀÌ commons-logging ±â¹ÝÀ¸·Î ±¸ÇöµÇ¾î ÀÖ½À´Ï´Ù.

commons-logging »ç¿ë¹ý

http://commons.apache.org/downloads/download_logging.cgi ¿¡¼­ commons-logging.jar ÆÄÀÏÀ» ´Ù¿î·ÎµåÇÕ´Ï´Ù.
commons-logging Àº ÀÚüÀûÀ¸·Î ·Î±ëÀ» Áö¿øÇѴٱ⺸´Ù´Â ¿©·¯ ·Î±ë API¸¦ Ç¥ÁØÈ­µÈ ¹æ¹ýÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ°Ô ÇØÁÖ´Â °³³äÀ̱⠶§¹®¿¡, ½ÇÁ¦ ·Î±ë ó¸® ¸¦ À§ÇÑ º°µµÀÇ ·Î±ë ±¸Çö ¼Ö·ç¼ÇÀÌ ÇÊ¿äÇÕ´Ï´Ù. ´ëÇ¥ÀûÀ¸·Î Log4j°¡ ÀÖ½À´Ï´Ù.
±âº»ÀûÀ¸·Î Æ÷ÇԵǾî ÀÖ´Â ·Î±ë ±¸Çöü´Â SimpleLog Ŭ·¡½º·Î, ÄܼÖÀ» ÀÌ¿ëÇÑ Ãâ·Â¸¸À» Áö¿øÇÕ´Ï´Ù.

¼³Á¤Àº ÁÖ·Î ÇÁ·ÎÆÛƼ ÆÄÀÏÀ» ÀÌ¿ëÇÑ ¹æ¹ýÀ» »ç¿ëÇϴµ¥ ¿©±â¼­´Â Log4j ¸¦ ÀÌ¿ëÇϵµ·Ï ¼³Á¤ÇÑ ¿¹ÀÔ´Ï´Ù.
°¢°¢ÀÇ ÇÁ·ÎÆÛƼ ÆÄÀÏÀ» CLASSPATH °¡ ÀâÈù °÷¿¡ »ý¼ºÇÕ´Ï´Ù. Log4j ¸¦ »ç¿ëÇϱâ À§Çؼ­´Â
http://logging.apache.org/log4j/1.2/download.html ¿¡¼­ Log4j ¹ÙÀ̳ʸ® ÆÄÀÏÀ» ´Ù¿î·Îµå ÇÑ ÈÄ jar ÆÄÀÏÀ» ÇÁ·ÎÁ§Æ®¿¡ Ãß°¡ÇØ¾ß ÇÕ´Ï´Ù.

commons-logging.properties

org.apache.commons.logging.Log = org.apache.commons.logging.impl.Log4JLogger

log4j.properties

log4j.rootLogger = DEBUG,console,file
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.layout = org.apache.log4j.SimpleLayout

log4j.appender.file = org.apache.log4j.FileAppender
log4j.appender.file.File = c:/debug.log
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern = %5p [%t] (%F:%L) - %m%n
·Î±ë ÇÁ·ÎÆÛƼ ¼Ó¼º ¼³¸í
  1. Logger(Category) : ·Î±ë ¸Þ¼¼Áö¸¦ Appender¿¡ Àü´Þ
  2. Appender : Àü´ÞµÈ ·Î±ë ¸Þ¼¼ÁöÀÇ Ãâ·Â ´ë»óÀ» ÁöÁ¤
  3. Layout : Appender°¡ ¾îµð¿¡ Ãâ·ÂÇÒ °ÍÀÎÁö °áÁ¤Çß´Ù¸é ¾î¶² Çü½ÄÀ¸·Î Ãâ·ÂÇÒ °ÍÀÌÁö Ãâ·Â layoutÀ» °áÁ´
log4j.properties ¼Ó¼º ¼³¸í
  • log4j.rootLogger : ÃÖ»óÀ§ ·Î±× ¼³Á¤À¸·Î, ·Î±×·¹º§, Appender ÁöÁ¤
  • log4j.appender.xxx : rootLogger¿¡¼­ ¼³Á¤ÇÑ Appender À̸§(xxx)¿¡ ´ëÇÑ ½ÇÁúÀûÀΠŬ·¡½º ÁöÁ¤
  • log4j.appender.xxx.layout : ÇØ´ç Appender ¸¦ ÅëÇØ Ãâ·ÂµÇ´Â ·Î±× ¸Þ½ÃÁö ÇüŸ¦ °ü¸®ÇÒ Layout Ŭ·¡½º ÁöÁ¤
Log ó¸® ¸Þ½ÃÁö ¹× ·Î±× ·¹º§
  1. FATAL : °¡Àå ½É°¢ÇÑ ¿À·ù, Äֿܼ¡ Ãâ·Â
  2. ERROR : ÀϹÝÀûÀÎ ¿À·ù, Äֿܼ¡ Ãâ·Â
  3. WARN : ÁÖÀǸ¦ ¿äÇÏ´Â °æ¿ì, Äֿܼ¡ Ãâ·Â
  4. INFO : ·±Å¸ÀÓ ½Ã °ü½ÉÀÖ´Â À̺¥Æ®, Äֿܼ¡ Ãâ·Â
  5. DEBUG : ½Ã½ºÅÛ È帧°ú °ü·ÃµÈ »ó¼¼Á¤º¸, ·Î±× ÆÄÀϷθ¸ Ãâ·Â
  6. TRACE : °¡Àå »ó¼¼ÇÑ ÇüÅÂÀÇ Á¤º¸, ·Î±× ÆÄÀϷθ¸ Ãâ·Â
Log4j Appender ÁÖ¿ä Ŭ·¡½º
  • ConsoleAppender : Äֿܼ¡ ·Î±× ¸Þ½ÃÁö Ãâ·Â
  • FileAppender : ÆÄÀÏ¿¡ ·Î±× ¸Þ½ÃÁö ±â·Ï
  • RollingFileAppender : ÆÄÀÏ¿¡ ·Î±× ¸Þ½ÃÁö ±â·ÏÇϰí, ÆÄÀÏ Å©±â°¡ ÀÏÁ¤ ¼öÁØ ÀÌ»óÀÌ µÇ¸é ´Ù¸¥ À̸§ÀÇ »õÆÄÀÏÀ» »ý¼ºÇÏ°í ±â·Ï
  • DailyRollingFileAppender : ÆÄÀÏ¿¡ ·Î±× ¸Þ½ÃÁö ±â·ÏÇϰí, ÇÏ·ç ´ÜÀ§·Î ·Î±× ÆÄÀÏÀ» º¯°æÇؼ­ ±â·Ï
  • SMTPAppender : ·Î±× ¸Þ½ÃÁö¸¦ À̸ÞÀÏ·Î Àü¼Û
  • NTEventAppender : À©µµ¿ìÁî ½Ã½ºÅÛ À̺¥Æ® ·Î±×·Î ¸Þ½ÃÁö Àü¼Û
Log4j Layout Ŭ·¡½º
  • DateLayout : ·Î±× ¸Þ½ÃÁö¸¦ ³¯Â¥ Áß½ÉÀ¸·Î °£´ÜÇÏ°Ô ±â·Ï
  • HTMLLayout : ·Î±× ¸Þ½ÃÁö¸¦ HTML Çü½ÄÀ¸·Î ±â·Ï
  • PatternLayout : ·Î±× ¸Þ½ÃÁö¸¦ »ç¿ëÀÚ Á¤ÀÇ ÆÐÅÏ¿¡ µû¶ó ±â·Ï
  • SimpleLayout : ·¹º§-¸Þ½ÃÁö Çü½ÄÀÇ °¡Àå °£´ÜÇÏ°Ô ·Î±× ±â·Ï
  • XMLLayout : ·Î±× ¸Þ½ÃÁö¸¦ XML Çü½ÄÀ¸·Î ±â·Ï
Log4j PatternLayout Çü½Ä
  • %c : Ä«Å×°í¸®¸¦ Ãâ·Â
  • %p : ·Î±ë ·¹º§À» Ãâ·Â
  • %m : ·Î±× ³»¿ë
  • %d : ·Î±ë À̺¥Æ®°¡ ¹ß»ýÇÑ ½Ã°£, yyyy-MM-dd, HH:mm:ss µî ½Ã°£ Çü½ÄÀ» »ç¿ë
  • %t : ·Î±ë À̺¥Æ®¸¦ ¹ß»ýÇÑ ½º·¹µåÀÇ À̸§
  • %% : %
  • %n : °³Çà
  • %C : Ŭ·¡½º À̸§
  • %F : ·Î±ëÀÌ ¹ß»ýÇÑ ÆÄÀÏ À̸§
  • %I : ·Î±ëÀÌ ¹ß»ýÇÑ È£ÃâÀÚ Á¤º¸
  • %L : ·Î±ëÀÌ ¹ß»ýÇÑ ¶óÀμö
  • %M : ·Î±ëÀÌ ¹ß»ýÇÑ ¸Þ¼Òµå À̸§
  • %r : ¾ÖÇø®ÄÉÀÌ¼Ç ½ÃÀÛ ÀÌÈĺÎÅÍ ·Î±ëÀÌ ¹ß»ýÇÑ ½ÃÁ¡ÀÇ ½Ã°£
  • %x : ·Î±ëÀÌ ¹ß»ýÇÑ ½º·¹µå¿Í °ú·ÃµÈ NDC
  • %X : ·Î±ëÀÌ ¹ß»ýÇÑ ½º·¹µå¿Í °ú·ÃµÈ MDC
ÀÚÄ«¸£Å¸ commons ·Î±ë API »ç¿ë¹ý
// ÆÑŰÁö import 
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

.. Áß°£ »ý·« ..

// Log Ŭ·¡½º ·¹ÆÛ·±½º ±¸Çϱâ
Log log = LogFactory.getLog(NamecardDAO.class);

.. Áß°£ »ý·« ...

// ·Î±ë »ç¿ë
if ( log.isDebugEnabled() ) {
  //log.debug( "Error Source:NamecardDAO.addNamecard(Namecard) : SQLException" );
  log.debug( "SQLState : " + e.getSQLState() );
  log.debug( "Message : " + e.getMessage() );
  log.debug( "Oracle Error Code : " + e.getErrorCode() );
  log.debug( "Query : " + sql );
}