????Java???????
????Java??????????????????????????????????????Java???java.util.logging?????????????????????API?????????????????????????????????????????????Щ?????????????ò????????????????????????????????????????????????????????????????????????
????????????У?????????Java??????????????????????????????????????????Java?????????
????Java??????
????Java???API?????????????????????
????Loggers??Logger??????????????????????Appender??
????Appenders????????Handlers????????????????????λ?á?????????????????Appenders???Layouts??????????и?????????
????Layouts????????Formatters????????????????е???????????????????Layouts??????????????????????е????????
??????Logger?????????????????????????????Appender?????Appender???Layout?????????????и????????????????????????????????????λ?á?????Filters??????????????????Appender??????????????????????????????????????У?Filters???????????????????????????????????????????

??????????
??????Java?У???????????????????????????????Щ???????????????????????????????????Java??java.util.logging????????????????????????????к????????????????????Log4j??Logback???tinylog???????????Щ????????????SLF4J??Apache Commons Logging???????????Щ??????????????????????н?????????????????????????н????л???
???????????????????????????????????????????????????????????????????????????????????????á?Logback????Log4j????汾???????汾1????????????????????????????????Log4j???°汾???汾2???????????Щ?????????????API??????????????Disruptor??????????tinylog????????????Щ???????????????????С?????
????????????????????????????Java???????????????????????Android??????????Log4j??Logback????????????????????? Apache Tomcat???????Log4j????????????????????e汾1??Log4j??
?????????
????????SLF4J?????????????????ó???????????н????ó??????????????????????????????????????java.util.logging??Log4j????Logback?????????????ó??????·??????????????????????????????·?????????????????????????????????????????????????????????????????????????????????е?????????????????Щ???????????????????
????????
???????????е?Java???????????????????????????????????????????????????????????Щ??????????????????????????????д??????????????????????????Щ????????????????????????????????????????????
????java.util.logging
????????Java?????????????洢???????? logging.properties ??????С??????????У????????????????????????????dot notation?????????Java?????????lib????????氳????????????????????????????Java?????????????????? java.util.logging.config.file ??????????????????????????????????????????????????д?????洢 logging.properties ?????
???????????????????????????logging.properties????ж??????Appender??
????# default file output is in user's home directory.
????java.util.logging.FileHandler.pattern = %h/java%u.log
????java.util.logging.FileHandler.limit = 50000
????java.util.logging.FileHandler.count = 1
????java.util.logging.FileHandler.formatter = java.util.logging.XmlFormatter
????Log4j
????Log4j?汾1???????? java.util.logging ????????????????Log4j???????????????????????? log4j.properties ??????????????£?Log4j????????????????????????????Log4j???????XML????????????????????????????洢?? log4j.xml ????С?
????Log4j?汾2???XML??JSON??YAML????????????Щ???????洢?? log4j2.xml??log4j2.json ?? log4j2.yaml ????С???汾1??????汾2?????????????????Щ????????????????汾???????????????????????????
????Logback
????????Logback?????????????????? logback.xml ??????????????????????Log4j?????XML????Logback?????????Groovy???????????????????????????洢?? logback.groovy ????С?????????????????????????????????????????????????
????Loggers
????Loggers????????????????????????????Java??ó????б??????????????Loggers???????????Appender????????п????????????????????????Loggers??????????????Loggers??????????Loggers????????????Loggers??ν???
??????????Logger
???????????????????洴????Logger??????С????????????巽?????????????????? java.util.logging ??????????? Logger.getLogger().getLogger() ??????????Logger????????????????string?????????????Logger??????????????????Logger???????????????????????????Logger??????????????????Logger?????????£???????????????????????????? class.getName() ?????Logger???????
????Logger logger = Logger.getLogger(MyClass.class.getName());
?????????????
????Logger?????????????????????????????????????????????????????ü????????????????????????????????????????????????????????????????Appender?????????????????ο?“???????”??????Logger.log() ??????????????????????????????????????????
????logger.log(Level.WARNING?? “This is a warning!”);
????????????????????????????????????????????磬???????????ú?????????????????????
????logger.warning(“This is a warning!”);
?????????????Logger??????????????????????????????????У?Logger??????????WARNING?????????????????????????????WARNING???????
????logger.setLevel(Level.WARNING);
????????????????Щ?????????????????????????logp()???????????????????????????????????source class??????????? logrb()????????????????????????????????????????????????entering() ?? exiting() ???????????????????????????????????????й????
????Appenders
????Appenders????????????????????????????????????????????Layout?????????????????????????????????????????????????????Appenders????????????????????λ?á????磬???????????????????????????????????????????????????????????????????
???????????java.util.logging?У?Appenders??????Handlers??
????????Appender
???????????????Appender?????????????????????????????????????? java.util.logging?????????? Logger.addHandler() ??????Appender????Logger?С????磬?????????????????μ?ConsoleHandler?????????????????????
????logger.addHandler(new ConsoleHandler());
????????????????Appender???????????????????????? java.util.logging??Appenders?????????????????б???????????????????????????????????
????handlers=java.util.logging.ConsoleHandler?? java.util.logging.FileHandler
?????????????XML???????????Appenders??????<Appenders>??????棬??????Log4j???????????????????????ConsoleAppender???????????????System.out??
????<Console name="console" target="SYSTEM_OUT">
????<PatternLayout pattern="[%p] %t: %m%n" />
????</Console>
????Appenders????
????????????????Щ??????Appenders????????????????????????????????