8.1 Log4JÀÛ¼ºÀÚ : ÁøÀº¿µ ( 2004-07-29)
¸ñÂ÷
8.1.1 Log4J¨ç Log4J¶õÇÁ·Î±×·¥À» °³¹ßÇÏ´Â »ç¶÷À̶ó¸é ´©±¸³ª ·Î±×(log)¸¦ ³²±â°Ô ¸¶·ÃÀÌ´Ù. ¾î¶°ÇÑ ÇüÅ·δøÁö ·Î±×¸¦ ³²°Ü¼ ÀÚ½ÅÀÌ ÀÛ¼ºÇÑ ÇÁ·Î±×·¥ÀÌ Á¤»óÀûÀ¸·Î ÀÛµ¿ÇÏ´ÂÁö, ȤÀº ½ÇÇà µµÁß¿¡ ¹®Á¦°¡ »ý°åÀ» ¶§¿¡µµ ·Î±×¸¦ Âü°íÇؼ ¾î´À ºÎºÐ¿¡ ¹®Á¦°¡ ÀÖ´ÂÁö ã¾Æº¸°ï ÇÑ´Ù. °³¹ßÀÚ°¡ ¾Æ´Ñ ½Ã½ºÅÛÀ» °ü¸®ÇÏ´Â °æ¿ì¿¡µµ ·Î±×´Â ¸Å¿ì Áß¿äÇÏ´Ù. º¸¾È ´ã´çÀÚÀÇ °æ¿ì ´©°¡ ½Ã½ºÅÛ¿¡ ºÒ¹ýÀû(?)À¸·Î Á¢±ÙÇÏ´ÂÁö ¸øµÈ Áþ(?)À» ÇÏ´ÂÁö °¨½ÃÇÒ ¶§¿¡µµ ·Î±×°¡ Áß¿äÇÑ ¿ªÇÒÀ» ÇÑ´Ù. ÀÌ·¸°Ô ´Ù¾çÇÑ »ç¶÷µé°ú ¿ëµµ·Î »ç¿ëÇÏ´Â ·Î±×¸¦ ¿©·¯ºÐÀº ¾î¶»°Ô »ý¼ºÇÏ°í °ü¸®ÇÏ°í ÀÖÀ»±î? System.out.println À» »ç¿ëÇÒ ¼ö ÀÖ´Ù. ´Ü¼øÇÑ ·Î±×¶ó¸é »ó°ü ¾ø°ÚÁö¸¸ ·Î±×ÀÇ Çüŵµ ´Ù¾çÇÏ°í ¿©·¯ Á¶°ÇÀÌ ÁÖ¾îÁ®¾ß ÇÑ´Ù¸é ÀÌ·± ´Ü¼øÇÑ ¹æ¹ýÀ» »ç¿ëÇؼ´Â ¿øÇÏ´Â ¸ñÇ¥¸¦ ´Þ¼ºÇϱâ Èûµé °ÍÀÌ´Ù.
·Î±×¸¦ ³²±â´Â ¹æ¹ý¿¡ Á» ´õ ÆíÇÏ°í ´Ù¾çÇÑ ±â´É°ú ¼º´É±îÁö º¸ÀåÇÏ´Â ¹æ¹ýÀÌ ÀÖ´Ù¸é? ±×·¸´Ù. ¹Ù·Î log4j ¸¦ »ç¿ëÇÏ´Â °ÍÀÌ´Ù.
Log4j´Â ÀÌ·± ½Ã´ëÀÇ ´Ù¾çÇÑ ¿å±¸¸¦ ÃæÁ·½ÃÅ°±â À§ÇØ µîÀåÇÑ °ÍÀÌ´Ù. ÀÌ¹Ì log4j ÇÁ·ÎÁ§Æ®°¡ ½ÃÀÛ µÈÁö ¸î ³âÀÌ Áö³µ°í ±× µ¿¾È ÃæºÐÈ÷ °ËÁõµÇ¾úÀ¸¸ç ¾÷°è¿¡¼µµ Ç¥ÁØó·³ ±»¾îÁ® ÀÖ¾î¼ ¸¹Àº »ó¿ë Á¦Ç°¿¡µµ Æ÷ÇԵǾî ÀÖ´Ù. JDK 1.4 ¹öÀüºÎÅÍ´Â ÀϺΠ·Î±ë API°¡ Ãß°¡µÇ¾úÁö¸¸ log4j ó·³ ¸·°ÇÏÁö´Â ¾Ê´Â µí ÇÏ´Ù.
ÇÁ·Î±×·¡¸Ó ¼öÁØ¿¡¼ DEBUG ·¹º§ÀÌ ÇÊ¿äÇÏ´Ù¸é ¿î¿µÀÚ ¼öÁØ¿¡¼´Â INFO·¹º§ÀÌ ÇÊ¿äÇÏ´Ù.
8.1.2 Log4J ¼³Ä¡¾Æ·¡ÀÇ À§Ä¡¿¡¼ ÆÄÀÏÀ» ´Ù¿î·Îµå ¹Þ´Â´Ù.
À§Ä¡ : http://logging.apache.org/site/binindex.cgi
ÆÄÀÏ : jakarta-log4j-1.2.8.zip
¿øÇÏ´Â Àå¼Ò¿¡ ¾ÐÃàÀ» Ç®¸é ¾Æ·¡¿Í °°Àº Æú´õ°¡ ³ªÅ¸³´Ù. Log4J¸¦ »ç¿ëÇϱâ À§Çؼ´Â, Ŭ·¡½º Æнº¿¡ log4j-1.2.8À» Æ÷ÇÔÇØ¾ß ÇÑ´Ù. ¾Æ·¡ÀÇ ³»¿ëÀ» È®ÀÎÇϸé Ãß°¡ÇÏ´Â ¹æ¹ýÀ» ¾Ë ¼ö ÀÖ´Ù. 8.1.3 Log4J »ç¿ë¨ç °£´ÜÇÑ ¿¹Á¦¿ª½Ã³ª óÀ½ ÇÁ·Î±×·¥À» ½ÃÀÛÇÒ ¶§ ºüÁöÁö ¾Ê´Â ´Ü°ñÀÎ Hello ÇÁ·Î±×·¥À¸·Î ½ÃÀÛÇÏÀÚ. import org.apache.log4j.Logger; import org.apache.log4j.BasicConfigurator; public class SimpleLog { // Logger Ŭ·¡½ºÀÇ ÀνºÅϽº¸¦ ¹Þ¾Æ¿Â´Ù. static Logger logger = Logger.getLogger(SimpleLog.class); public SimpleLog() {} public static void main(String[] args) { /* ÄַܼΠ·Î±× Ãâ·Â À§ÇÑ °£´ÜÇÑ ¼³Á¤, ÀÌ ¼³Á¤ÀÌ ¾ø´Ù¸é °æ°í ¸Þ¼¼Áö°¡ Ãâ·ÂµÇ¸é¼ ½ÇÇàÀÌ ÁߴܵȴÙ. */ BasicConfigurator.configure(); logger.debug("Hello log4j."); logger.info("Hello log4j."); logger.warn("Hello log4j."); logger.error("Hello log4j."); logger.fatal("Hello log4j."); //loger.log( Level.DEBUG , "debug") ¿Í µ¿ÀÏÇÏ´Ù. } }½ÇÇà ---------- java ---------- 0 [main] DEBUG SimpleLog - Hello log4j. 10 [main] INFO SimpleLog - Hello log4j. 10 [main] WARN SimpleLog - Hello log4j. 10 [main] ERROR SimpleLog - Hello log4j. 10 [main] FATAL SimpleLog - Hello log4j. Ãâ·Â ¿Ï·á (1ÃÊ °æ°ú) - Á¤»ó Á¾·á ¸Ç ¾Õ¿¡ µîÀåÇÏ´Â ¼ýÀÚ´Â ·Î±ë È£Ãâ·ÎºÎÅÍ ¾ó¸¶¸¸ÅÀÇ ½Ã°£ÀÌ Áö³µ´ÂÁö¸¦ ¹Ð¸®¼¼ÄÁµå ´ÜÀ§·Î º¸¿©ÁØ´Ù. ÀÌ Á¤º¸´Â º°·Î À¯¿ëÇÒ °Í °°Áö´Â ¾Ê´Ù. ´ÙÀ½¿¡ º¸ÀÌ´Â [main] Àº È£ÃâÇÑ ¾²·¹µåÀÇ À̸§À» ³ªÅ¸³½´Ù. ´ÙÀ½¿¡ ³ªÅ¸³ª´Â DEBUG , INFO , WARN µîÀº ·Î±× ·¹º§ÀÌ´Ù. ¼Ò½º Äڵ忡¼ ÁöÁ¤ÇÑ ·¹º§À» ±×´ë·Î Ãâ·ÂÇØÁÖ°í ÀÖ´Ù. ±× µÚ¿¡ ³ª¿À´Â °ÍÀº º¸½Ã´Ù½ÃÇÇ Å¬·¡½ºÀÇ À̸§°ú ½ÇÁ¦ ·Î±× ¸Þ½ÃÁö¸¦ º¸¿©ÁØ´Ù. Ưº°È÷ À¯¿ëÇÑ ¿¹Á¦´Â ¾Æ´ÏÁö¸¸ »ç¿ëÇÏ´Â ¹æ¹ý¿¡ µû¶ó System.out.println º¸´Ù´Â ±×·² µí ÇØ º¸ÀδÙ. ¿¹Á¦¿¡´Â Æ÷ÇԵǾî ÀÖÁö ¾ÊÁö¸¸ ·Î±×¸¦ Ãâ·ÂÇÒÁö¸¦ °áÁ¤ÇÏ´Â Ç÷¡±× °ªÀ» »ç¿ëÇϰųª ·¹º§·Î Á¦ÇÑÀ» Çϵµ·Ï ¼öÁ¤ÇÏ¸é ±Ý»ó÷ÈÀÏ °ÍÀÌ´Ù.
¨é Appender Log4J API¹®¼¸¦ º¸¸é ±âº»ÀûÀ¸·Î XXXAppender·Î ³¡³ª´Â Ŭ·¡½ºµé ÀÖ´Ù. ¾îÆæ´õ´Â Ŭ·¡½º À̸§¸¸À¸·Î »ç¿ë ¿ëµµ¸¦ ÁýÀÛÇÒ ¼ö ÀÖÀ»¸¸ÇÑ °ÍÀÌ ¸¹´Ù. ¿©±â¿¡¼´Â ¸î¸î°³¸¸ ´Ù·ïº¸ÀÚ. ¾îÆæ´õÀÇ Ãâ·ÂÆ÷¸ËÀ» °áÁ¤ÇÏ´Â ·¹À̾ƿôÀº DateLayout, HTMLLayout, PatternLayout, SimpleLayout, XMLLayout ÀÇ 5°³°¡ ÀÖ´Ù. ÀϹÝÀûÀ¸·Î PatternLayoutÀ» »ç¿ëÇÏ´Â °ÍÀÌ µð¹ö±ë¿¡´Â °¡Àå ÀûÇÕÇÏ´Ù. ÀÚ¼¼ÇÑ ÆÐÅÏÀº ¾Æ·¡ÀÇ Å¬·¡½º¸¦ »ìÆ캻´Ù. import java.io.IOException; import org.apache.log4j.DailyRollingFileAppender; import org.apache.log4j.Logger; import org.apache.log4j.PatternLayout; public class DailyLog { static Logger logger = Logger.getLogger(DailyLog.class); public static void main(String[] args) { String pattern = "[%d{yyyy-MM-dd HH:mm:ss}] %-5p [%l] - %m%n"; PatternLayout layout = new PatternLayout(pattern); // óÀ½ »ý¼ºµÉ ·Î±× ÆÄÀÏÀÇ À̸§ String filename = "DailyLog.log"; // ³¯Â¥ ÆÐÅÏ¿¡ µû¶ó Ãß°¡µÉ ÆÄÀÏ À̸§ String datePattern = ".yyyy-MM-dd"; DailyRollingFileAppender appender = null; try { appender = new DailyRollingFileAppender(layout, filename, datePattern); } catch (IOException ioe) { ioe.printStackTrace(); } logger.addAppender(appender); logger.debug("Hello log4j."); } }½ÇÇà ---------- java ---------- Ãâ·Â ¿Ï·á (1ÃÊ °æ°ú) - Á¤»ó Á¾·á DailyLog.log ÆÄÀÏÀ» ¿¾îº¸¸é ¾Æ·¡¿Í °°Àº ³»¿ëÀÌ Ãß°¡µÈ°ÍÀ» ¾Ë ¼ö ÀÖ´Ù.
[2004-07-29 17:36:05] DEBUG [DailyLog.main(DailyLog.java:30)] - Hello log4j.
ÆÄÀÏÀÇ ³»¿ëÀº ¼Ò½º Äڵ忡¼ Á¤ÀÇµÈ ÆÐÅÏÀÎ "[%d{yyyy-MM-dd HH:mm:ss}] %-5p [%l] - %m%n" ¿¡ µû¶ó »ý¼ºµÈ °ÍÀÌ´Ù. Ãâ·ÂµÈ °Í°ú ´ëÁ¶Çغ¸¸é ´ëÃæ ¾î¶² ÀǹÌÀÎÁö À¯Ãß°¡ °¡´ÉÇÏ´Ù. ù¹ø° ³»¿ëÀº ³¯Â¥¸¦ ³ªÅ¸³½´Ù. ³¯Â¥¸¦ ³ªÅ¸³»´Â Çüŵµ SimpleDateFormat À» »ç¿ëÇÏ´Â °Íó·³ ¿øÇÏ´Â ÇüÅ·Π°¡´ÉÇÏ´Ù. ´ÙÀ½¿¡ º¸ÀÌ´Â °ÍÀº ·Î±× ·¹º§ÀÌ¸ç ´ÙÀ½¿¡ º¸ÀÌ´Â °ÍÀº [ÆÐÅ°Áö À̸§.Ŭ·¡½º À̸§.¸Þ¼Òµå À̸§(¼Ò½º ÆÄÀÏ À̸§:¼Ò½º ¶óÀÎ ³Ñ¹ö)] ÀÌ´Ù. ±×¸®°í ¸¶Áö¸·À¸·Î ½ÇÁ¦ ·Î±× ³»¿ëÀ» º¸¿©ÁØ´Ù. Ãâ·Â ÆÐÅÏÀº ÀÌ¿Ü¿¡µµ ¸¹Àº °ÍµéÀÌ Àִµ¥ ÀÚ¼¼ÇÑ »çÇ×Àº log4j API ¹®¼¸¦ Âü°íÇϵµ·Ï ÇÏÀÚ.
#log4j.rootLogger=DEBUG, A1
log4j.rootLogger=OFF, A1 log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] - %m%n ¾Æ·¡ ¹®¼´Â log¸¦ Ãâ·ÂÇÒ ÀÚ¹Ù¹®¼ÀÌ´Ù. import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; public class LogProperty { static Logger logger = Logger.getLogger(LogProperty.class); public static void main(String[] args) { logger.debug("Hello log4j."); } }½ÇÇà ---------- java ---------- Ãâ·Â ¿Ï·á (1ÃÊ °æ°ú) - Á¤»ó Á¾·á ȸ鿡 Ãâ·ÂµÇ´Â ·Î±×´Â ¾ø´Ù. ¾Æ·¡¿Í °°ÀÌ º¯°æÇÑ ÈÄ ´Ù½Ã LogProperty¸¦ ½ÇÇàÇÑ´Ù.
log4j.rootLogger=DEBUG, A1
#log4j.rootLogger=OFF, A1 ¾Æ·¡¿Í °°ÀÌ °á°ú°¡ ³ªÅ¸³¯ °ÍÀÌ´Ù.
---------- java ----------
[2004-07-29 18:10:33] - Hello log4j. Ãâ·Â ¿Ï·á (3ÃÊ °æ°ú) - Á¤»ó Á¾·á ¶Ç ´Ù¸¥ ¿¹¸¦ µé¾îº¸ÀÚ. log4j.properties ¸¦ ¾Æ·¡¿Í °°ÀÌ ¼öÁ¤ÇÑ´Ù.
log4j.rootLogger=DEBUG, A1
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender log4j.appender.A1.File=test.log log4j.appender.A1.DatePattern='.'yyyy-mm-dd log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] %-5p [%l] - %m%n LogProperty.java ¹®¼¸¦ ´Ù½Ã ½ÇÇàÇÏ¸é °°Àº Æú´õ¿¡ test.log ÆÄÀÏÀÌ »ý¼ºµÈ´Ù. test.logÆÄÀÏÀ» ¿¾îº»´Ù.
[2004-07-29 18:17:35] DEBUG [LogProperty.main(LogProperty.java:16)] - Hello log4j.
Âü°í¹®Çå
|