log4j

Da Wikipedia, l'enciclopedia libera.
Jump to navigation Jump to search
Apache log4j
software
Logo
GenereLibreria software (non in lista)
SviluppatoreApache Software Foundation
Ultima versione2.6 (25 maggio 2016)
Sistema operativoMultipiattaforma
LinguaggioJava
LicenzaApache License 2.0
(licenza libera)
Sito web

In informatica Apache log4j è una libreria Java, originariamente scritta da Ceki Gülcü, ora parte del progetto log4j della Apache Software Foundation, uno dei possibili tool per la gestione dei log in ambiente Java insieme a: logback, SLF4J, le API Java per il logging, Apache Common Logging, tinylog ed altri.

Largamente utilizzata in molte applicazioni Java, negli anni il suo sviluppo è stato rallentato ed è divenuta difficile da manutenere a causa della necessità di restare retrocompatibile con versioni molto vecchie di Java. Ha terminato il proprio ciclo di vita nell'agosto 2015 in favore del nuovo progetto log4j 2 (si veda https://logging.apache.org/log4j/2.x/manual/index.html).

Una qualunque applicazione Java necessita di scrivere un log. Al crescere della complessità dell'applicazione, la quantità di messaggi scritti in uno o più log diventa pure complessa. Nel caso limite, possono insorgere problemi di prestazioni dovuti all'accumularsi di un numero di messaggi eccessivo. Log4j e gli altri possibili tool servono a meglio organizzare questo lavoro.

Livelli di log[modifica | modifica wikitesto]

La seguente tabella definisce i livelli dei log e i messaggi in log4j in ordine decrescente di severità. La colonna di sinistra indica il livello di log designato e alla destra c'è una breve descrizione.

Livello Descrizione
OFF Il livello più alto possibile, viene usato per disattivare i log.
FATAL Errore importante che causa un prematuro termine dell'esecuzione. Ci si aspetta che questo sia visibile immediatamente all'operatore.
ERROR Un errore di esecuzione o una condizione imprevista. Anche questo deve essere immediatamente segnalato.
WARN Usato per ogni condizione inaspettata o anomalia di esecuzione, che però non necessariamente ha comportato un errore.
INFO Usato per segnalare eventi di esecuzione (esempio: startup/shutdown). Deve essere segnalato ma poi non mantenuto per tanto tempo.
DEBUG Usato nella fase di debug del programma. Viene riportato nel file di log.
TRACE Alcune informazioni dettagliate. Ci si aspetta che venga scritto esclusivamente nei file di log. È stato aggiunto nella versione 1.2.12.

Esempio[modifica | modifica wikitesto]

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC
"http://logging.apache.org/log4j/docs/api/org/apache/log4j/xml/log4j.dtd">
<log4j:configuration>
    <!-- an appender is an output destination, such as e.g. the console or a file;
    names of appenders are arbitrarily chosen-->
    <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern"
                value="%d{ABSOLUTE} %5p %c{1}:%L - %m%n" />
        </layout>
    </appender>
 
    <!-- loggers of category 'org.springframework' will only log messages of level info or higher;
    if you retrieve Loggers by using the class name (e.g. Logger.getLogger(AClass.class))
    and if AClass is part of the springframework.org package, it will belong to this category -->
    <logger name="org.springframework">
        <level value="info"/>
    </logger>

    <!-- everything of spring was set to info but for class PropertyEditorRegistrySupport we do want
debug logging -->
    <logger name="org.springframework.beans.PropertyEditorRegistrySupport">
        <level value="debug"/>
    </logger>
 
    <logger name="org.acegisecurity">
        <level value="info"/>
    </logger>
 
    <root><!-- the root category -->
        <!-- all log messages of level debug or more serious will be logged, unless defined otherwise -->
        <!-- all log messages will be logged to the appender 'stdout', unless defined otherwise -->
        <level value="debug" />
        <appender-ref ref="stdout" />
    </root>
</log4j:configuration>

Confronto delle caratteristiche di diversi framework per il logging[modifica | modifica wikitesto]

Features
Framework Supported log levels Standard appenders Popularity Cost / licence
Log4J FATAL ERROR WARN INFO DEBUG TRACE AsyncAppender, JDBCAppender, JMSAppender, LF5Appender, NTEventLogAppender, NullAppender, SMTPAppender, SocketAppender, SocketHubAppender, SyslogAppender, TelnetAppender, WriterAppender Widely used in many projects and platforms Apache License, Version 2.0
Java Logging API SEVERE WARNING INFO CONFIG FINE FINER FINEST Sun's default Java Virtual Machine (JVM) has the following: ConsoleHandler, FileHandler, SocketHandler, MemoryHandler Comes with the JRE
Apache Commons Logging FATAL ERROR WARN INFO DEBUG TRACE Depends on the underlying framework Widely used, in conjunction with log4j Apache License, Version 2.0
SLF4J ERROR WARN INFO DEBUG TRACE Depends on the underlying framework, which is pluggable MIT License
tinylog ERROR WARNING INFO DEBUG TRACE ConsoleWriter, FileWriter, LogcatWriter, JdbcWriter, RollingFileWriter, SharedFileWriter and null (discards all log entries)[1] Apache License, Version 2.0
Logback ERROR WARN INFO DEBUG TRACE Too many to list: see Appender JavaDoc Used in many projects like Akka, Apache Camel, Apache Cocoon, Artifactory, Gradle, Lift Framework, Play Framework, Scalatra, SonarQube, etc... LGPL, Version 2.1

Note[modifica | modifica wikitesto]

  1. ^ User manual of tinylog, su tinylog.org.

Collegamenti esterni[modifica | modifica wikitesto]

Port[modifica | modifica wikitesto]

Informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica