·Î±ë(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
·Î±ë ÇÁ·ÎÆÛƼ ¼Ó¼º ¼³¸í
- Logger(Category) : ·Î±ë ¸Þ¼¼Áö¸¦ Appender¿¡ Àü´Þ
- Appender : Àü´ÞµÈ ·Î±ë ¸Þ¼¼ÁöÀÇ Ãâ·Â ´ë»óÀ» ÁöÁ¤
- Layout : Appender°¡ ¾îµð¿¡ Ãâ·ÂÇÒ °ÍÀÎÁö °áÁ¤Çß´Ù¸é ¾î¶² Çü½ÄÀ¸·Î Ãâ·ÂÇÒ °ÍÀÌÁö Ãâ·Â layoutÀ» °áÁ´
log4j.properties ¼Ó¼º ¼³¸í
- log4j.rootLogger : ÃÖ»óÀ§ ·Î±× ¼³Á¤À¸·Î, ·Î±×·¹º§, Appender ÁöÁ¤
- log4j.appender.xxx : rootLogger¿¡¼ ¼³Á¤ÇÑ Appender À̸§(xxx)¿¡ ´ëÇÑ ½ÇÁúÀûÀΠŬ·¡½º ÁöÁ¤
- log4j.appender.xxx.layout : ÇØ´ç Appender ¸¦ ÅëÇØ Ãâ·ÂµÇ´Â ·Î±× ¸Þ½ÃÁö ÇüŸ¦ °ü¸®ÇÒ Layout Ŭ·¡½º ÁöÁ¤
Log ó¸® ¸Þ½ÃÁö ¹× ·Î±× ·¹º§
- FATAL : °¡Àå ½É°¢ÇÑ ¿À·ù, Äֿܼ¡ Ãâ·Â
- ERROR : ÀϹÝÀûÀÎ ¿À·ù, Äֿܼ¡ Ãâ·Â
- WARN : ÁÖÀǸ¦ ¿äÇÏ´Â °æ¿ì, Äֿܼ¡ Ãâ·Â
- INFO : ·±Å¸ÀÓ ½Ã °ü½ÉÀÖ´Â À̺¥Æ®, Äֿܼ¡ Ãâ·Â
- DEBUG : ½Ã½ºÅÛ È帧°ú °ü·ÃµÈ »ó¼¼Á¤º¸, ·Î±× ÆÄÀϷθ¸ Ãâ·Â
- 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 );
}
