±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚcsdn,Ö÷Òª½²½âÁ˳£ÓõÄÈÕÖ¾¿ò¼Ü£¬Í³Ò»ÈÕ־ģ¿é£¬¸÷¸öÈÕÖ¾µÄ¹¦ÄÜÑÝʾµÈµÈ¡£
|
|
ǰÑÔ
×÷ΪһÃû×ÊÉîµÄ¿ª·¢ÈËÔ±£¬¶ÔÓÚÈÕÖ¾¼Ç¼¿ò¼ÜÒ»¶¨²»»áºÜİÉú¡£¶øÇÒ¼¸ºõÔÚËùÓÐÓ¦ÓÃÀïÃæ£¬Ò»¶¨»áÓõ½¸÷ÖÖ¸÷ÑùµÄ
ÈÕÖ¾¿ò¼ÜÓÃÀ´¼Ç¼³ÌÐòµÄÔËÐÐÐÅÏ¢¡£¶ø¶ÔÓÚÒ»¸ö³ÉÊìµÄjavaÓ¦Óã¬Õâ¸öÊDZز»¿ÉÉٵġ£ÔÚ¿ª·¢ºÍµ÷ÊԽ׶Σ¬ÈÕÖ¾¿ÉÒÔ°ïÖúÎÒÃǸü¿ìµÄ¶¨Î»ÎÊÌ⣻¶øÔÚÓ¦ÓõÄÔËά¹ý³ÌÖУ¬ÈÕ־ϵͳÓÖ¿ÉÒÔ°ïÖúÎÒÃǼǼ´ó²¿·ÖµÄÒì³£ÐÅÏ¢£¬Í¨³£ºÜ¶àÆóÒµ»áͨ¹ýÊÕ¼¯ÈÕÖ¾ÐÅÏ¢À´¶ÔϵͳµÄÔËÐÐ״̬½øÐÐʵʱ¼à¿ØÔ¤¾¯¡£ÄÇô£¬Äã¶ÔÈÕÖ¾¿ò¼Üµ½µ×ÓжàÁ˽âÄØ£¿
³£ÓõÄÈÕÖ¾¿ò¼Ü
Log4j
Log4jÊÇapacheÏÂÒ»¸ö¹¦Äܷdz£·á¸»µÄjavaÈÕÖ¾¿âʵÏÖ£¬Log4jÓ¦¸ÃÊdzöÏֱȽÏÔç¶øÇÒ×îÊÜ»¶ÓµÄjavaÈÕÖ¾×é
¼þ£¬ËüÊÇ»ùÓÚjavaµÄ¿ªÔ´µÄÈÕÖ¾×é¼þ¡£Log4jµÄ¹¦Äܷdz£Ç¿´ó£¬Í¨¹ýLog4j¿ÉÒÔ°ÑÈÕÖ¾Êä³öµ½¿ØÖÆÌ¨¡¢Îļþ¡¢Óû§½çÃæ¡£Ò²¿ÉÒÔÊä³öµ½²Ù×÷ϵͳµÄʼþ¼Ç¼Æ÷ºÍһЩϵͳ³£×¤½ø³Ì¡£ÖµµÃÒ»ÌáµÄÊÇ£ºLog4j¿ÉÒÔÔÊÐíÄã·Ç³£±ã½ÝµØ×Ô¶¨ÒåÈÕÖ¾¸ñʽºÍÈÕÖ¾µÈ¼¶£¬¿ÉÒÔ°ïÖú¿ª·¢ÈËԱȫ·½Î»µÄÕÆ¿Ø×Ô¼ºµÄÈÕÖ¾ÐÅÏ¢
Log4j2
Log4j2ÊÇLog4j1µÄÉý¼¶°æ±¾¡£Log4j2»ù±¾ÉϰÑLog4j°æ±¾µÄºËÐÄÈ«²¿Öع¹µôÁË£¬¶øÇÒ»ùÓÚLog4j×öÁ˺ܶàÓÅ»¯ºÍ¸Ä±ä
Logback
LogbackÊÇÓÉLog4j´´Ê¼ÈËÉè¼ÆµÄÁíÒ»¸ö¿ªÔ´ÈÕÖ¾×é¼þ£¬Ò²ÊÇ×÷ΪLog4jµÄÌæ´úÕß³öÏֵġ£¶øÇÒ¹Ù·½Êǽ¨ÒéºÍ
Slf4jÒ»ÆðʹÓã¬ÄãÃÇÒ»¶¨²»ÖªµÀLogback¡¢slf4j¡¢Log4j¶¼Êdzö×Ôͬһ¸öÈ˰ɡ£ LogbackÊÇÔÚLog4jµÄ»ù´¡ÉÏ×öµÄ¸Ä½ø°æ±¾£¬¶øSlf4jÓÖÊÇͬһ¸öÈËÉè¼ÆµÄ£¬ËùÒÔĬÈϾͶÔSlf4jÎÞ·ì½áºÏ¡£
JDK-Logging
Jdk1.4°æ±¾ÒÔºó¿ªÊ¼ÌṩµÄÒ»¸ö×Ô´øµÄÈÕÖ¾¿âʵÏÖ
ͳһÈÕ־ģ¿é
ĿǰÊÐÃæÉÏÓÐÁ½¸öÓõñȽϹ㷺µÄͳһÈÕÖ¾¹æ·¶½Ó¿Ú£¬·Ö±ðÊÇ
SLF4j
SLF4j£¨Simple Logging Facade For Java£©ÊÇ»ùÓÚAPIµÄjavaÈÕÖ¾¿ò¼Ü£¬SLF4jÌṩÁËÒ»¸ö¼òµ¥Í³Ò»µÄÈÕ
Ö¾¼Ç¼½Ó¿Ú£¬¿ª·¢ÕßÔÚÅäÖúͲ¿Êðʱ£¬Ö»ÐèҪʵÏÖÕâ¸ö½Ó¿Ú¾Í¿ÉÒÔʵÏÖÈÕÖ¾¹¦ÄÜ¡£¿ÉÒÔ˵£¬Ëü²¢²»ÊÇÒ»¸ö¾ßÌåµÄÈÕÖ¾½â¾ö·½°¸£¬ËüÖ»ÊÇ·þÎñÓÚ¸÷ÖÖ¸÷ÑùµÄÈÕ־ϵͳ£¬ÔÊÐí×îÖÕÓû§ÔÚ²¿ÊðÓ¦ÓÃÉÏʹÓÃ×Ô¼º³£ÓõÄÈÕ־ϵͳ
Commons-Logging
Common-logging ΪÖÚ¶à¾ßÌåµÄÈÕ־ʵÏÖ¿âÌṩÁËÒ»¸öͳһµÄ½Ó¿Ú£¬ºÍSLF4jµÄ×÷ÓÃÀàËÆ£¬ËüÔÊÐíÔÚÔËÐÐʱ°ó¶¨ÈÎÒâµÄÈÕÖ¾¿â£»
ÕâÀïÆäʵÓиöС¹ÊÊ£¬µ±Äêapache˵·þLog4jÒÔ¼°ÆäËûµÄÈÕÖ¾¿ò¼Ü°´ÕÕCommons-LoggingµÄ±ê×¼À´±àд£¬µ«ÊÇÓÉÓÚCommons-LoggingµÄÀà¼ÓÔØÓеãÎÊÌ⣬ʵÏÖÆðÀ´²»ÓѺá£Òò´ËLog4jµÄ×÷Õ߾ʹ´×÷ÁËSlf4j£¬Ò²Òò´ËÓëCommons-LoggingÁ½·ÝÌìÏÂ
ͼ˵¼¸¸öÈÕÖ¾¿ò¼ÜµÄ¹ØÏµ

¸÷¸öÈÕÖ¾µÄ¹¦ÄÜÑÝʾ
¸÷¸öÈÕ־ģ¿éµÄ¹¦ÄÜÑÝʾºÍÅäÖÃ˵Ã÷£¬ÎҾͲ»×ö¶à˵ÁË£¬ÍøÉÏËÑË÷ÏÂÒ»×¥Ò»´ó°Ñ£¬¶¼½²µÃºÜÏêϸ¡£
slf4jºÍ¸÷¸öÈÕÖ¾¿ò¼Ü¼¯³ÉµÄÔÀí
ÕâÀïÒªÖØµã˵Ã÷Ò»¸ö¶«Î÷£¬¾ÍÊÇslf4jͨ¹ýÒ»¸ö·Ç³£ÓÐȤ¶øÇÒºÜÅ£µÄÉè¼Æ£¬°Ñ¸÷¸öÈÕÖ¾¿ò¼ÜÈ¥¼¯³É½øÀ´¡£
Èç¹ûÄãÃÇÈ¥¿´slf4jµÄÔ´Â룬ÔÚLoggerFactory.javaÀïÃæÓÐÒ»¸öÕâÑùµÄ¾²Ì¬È«¾Ö±äÁ¿
private static
String STATIC_LOGGER_BINDER_PATH = "org/slf4j/impl/StaticLoggerBinder.class"; |
»¹ÓÐÒ»¶ÎºËÐÄ´úÂë
static Set<URL>
findPossibleStaticLoggerBinderPathSet() {
LinkedHashSet staticLoggerBinderPathSet = new
LinkedHashSet();
try {
ClassLoader ioe = LoggerFactory.class.getClassLoader();
Enumeration paths;
if(ioe == null) {
paths = ClassLoader.getSystemResources (STATIC_LOGGER_BINDER_PATH);
} else {
paths = ioe.getResources (STATIC_LOGGER_BINDER_PATH);
}
while(paths.hasMoreElements()) {
URL path = (URL)paths.nextElement();
staticLoggerBinderPathSet.add(path);
}
} catch (IOException var4) {
Util.report ("Error getting resources from
path", var4);
}
return staticLoggerBinderPathSet;
}
|
´ó¼Ò¶ÔClassLoader»úÖÆÁ˽âµÄͬѧ£¬Õâ¶Î´úÂë¿´ÆðÀ´¾Í·Ç³£ÈÝÒ×¶®ÁË£¬Í¨¹ýClassLoaderÈ¥¼ÓÔØclasspathÏÂËùÓдæÔÚStaticLoggerBinder.classµÄÎļþ¡£ÕÒµ½Õâ¸öÎļþÒÔºó¼Óµ½Ò»¸ö¼¯ºÏÀïÃæ¡£Í¨¹ý¼ÓÔØµ½¶ÔÓ¦jarÖеÄStaticLoggerBinder¡£À´»ñȡʵÀý¡£
public static
ILoggerFactory getILoggerFactory() {
if (INITIALIZATION_STATE == UNINITIALIZED) {
synchronized (LoggerFactory.class) {
if (INITIALIZATION_STATE == UNINITIALIZED) {
INITIALIZATION_STATE = ONGOING_INITIALIZATION;
performInitialization();
}
}
}
switch (INITIALIZATION_STATE) {
case SUCCESSFUL_INITIALIZATION:
return StaticLoggerBinder.getSingleton().getLoggerFactory();
case NOP_FALLBACK_INITIALIZATION:
return NOP_FALLBACK_FACTORY;
case FAILED_INITIALIZATION:
throw new IllegalStateException (UNSUCCESSFUL_INIT_MSG);
case ONGOING_INITIALIZATION:
// support re-entrant behavior.
// See also http://jira.qos.ch/browse/SLF4J-97
return SUBST_FACTORY;
}
throw new IllegalStateException ("Unreachable
code");
}
|
ÔÚÕâ¶Î´úÂëÀïÃæ£¬¿ÉÒÔ¿´µ½ÓÐÒ»¸öStaticLoggerBinder.getSingleton().getLoggerFactory()
Õâ¸ö¾ÍÊÇÔÚµÚÈý·½µÄ¼¯³É°üÖзµ»ØµÄʵÀý¡£Õâ¸ö¾ÍÊÇslf4jÀïÃæ±È½ÏºËÐĵÄÒ»¿é
×ܽá
ÒÔÉϼòµ¥µÄ°ÑjavaÖг£ÓõÄÈÕÖ¾¿ò¼Ü×öÁËÊáÀí
|