Vždycky se na pár desítek minut zarazím, když potřebuji vytvořit pro nějakou aplikaci triviální logování pomocí Jakarta Commons Logging knihovny za použití logovacího subsystému z JRE 1.4 nebo vyšší. Bohužel dokumentace k oběma API neobsahuje žádný příklad, takže obvykle hledám na internetu nebo ve starých projektech. Raději to tedy napíšu na svůj blog, abych to příště nehledal…
Vždycky se na pár desítek minut zarazím, když potřebuji vytvořit pro nějakou aplikaci triviální logování pomocí Jakarta Commons Logging knihovny za použití logovacího subsystému z JRE 1.4 nebo vyšší. Bohužel dokumentace k oběma API neobsahuje žádný příklad, takže obvykle hledám na internetu nebo ve starých projektech. Raději to tedy napíšu na svůj blog, abych to příště nehledal…
commons-logging.properties
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14LoggerPoužije logovací subsystém z Javy. Rád využívám složeb tohoto API, protože nač přidávat k projektu další knihovnu (např. Log4J)? Lze také specifikovat factory třídu, která se použije, ale toto není nutné:
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Jdk14LoggerZajímavé je, že knihovna commons-logging automaticky použije JDK 1.4 logger, pokud není nakonfigurována jinak a pokud v CLASSPATH nenajde knihovnu log4j (které dává přednost). Bohužel tuto knihovnu často v CLASSPATH mám kvůli závislostem, proto je třeba commons-logging explicitně nastavit.
org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl
logging.properties
handlers = java.util.logging.ConsoleHandler,java.util.logging.FileHandlerJednoduchá konfigurace – na konzoli se vypisují jen chyby, do souboru APLIKACE.log pak info hlášky. Tento soubor můžete uložit třeba do domovského adresáře uživatele (pomocí masky %u) – více info u dokumentaci třídy FileHandler.
formatters=java.util.logging.SimpleFormatter
.level = ALL
java.util.logging.ConsoleHandler.level = SEVERE
java.util.logging.FileHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.FileHandler.pattern = APLIKACE.log
Nastavení pomocí proměnných
Úroveň logování lze také nastavit pomocí systémové proměnné Javy: org.apache.commons.logging.Log. Můžete ji nastavit na příkazové řádce parametrem -D, nebo z programu (System.setProperty). Dostupné loggery (volby) v implementaci commons-logging verze 1.1 jsou:
- org.apache.commons.logging.impl.AvalonLogger
- org.apache.commons.logging.impl.Jdk13LumberjackLogger
- org.apache.commons.logging.impl.Jdk14Logger
- org.apache.commons.logging.impl.Log4JLogger
- org.apache.commons.logging.impl.LogKitLogger
- org.apache.commons.logging.impl.NoOpLog
- org.apache.commons.logging.impl.SimpleLog
java -Dorg.apache.commons.logging.Log=org.apache.commons.logging.impl.NoOpLog -cp . cz.app.MyAppDalší informace o nastavení logování přes commons-logging jsou v oficiální dokumentaci: http://commons.apache.org/logging/guide.html#Configuration
Tento zápisek vznikl převodem z mého starého blogu. Ne všechny texty byly takto převedeny, kompletní archiv již není k dispozici.