Apache log4j
software
Logo
Logo
GenereLibreria software (non in lista)
SviluppatoreApache Software Foundation
Ultima versione2.26.0 (7 maggio 2026)
Sistema operativoMultipiattaforma
LinguaggioJava
LicenzaApache License 2.0
(licenza libera)
Sito weblogging.apache.org/log4j/2.x/

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.

Il 9 dicembre 2021 è stata riportata una vulnerabilità 0-day, chiamata "Log4Shell"[1], che permette l'esecuzione arbitraria di codice in Log4j. Secondo alcuni si tratta della "singola vulnerabilità più grossa e più critica dell'ultimo decennio"[2].

Livelli di log

modifica

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
<?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>

Note

modifica

Altri progetti

modifica

Collegamenti esterni

modifica

Port

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

📚 Artikel Terkait di Wikipedia

Array

insieme di valori solitamente interi e contigui. Per esempio, il codice Java per stampare i contenuti di un array di n interi potrebbe essere come segue:

Doxygen

multipiattaforma (Windows, Mac OS, Linux, ecc.) ed opera con i linguaggi C++, C, Java, Objective C, Python, IDL (versioni CORBA e Microsoft), Fortran, PHP, C#

Pagina web

che lo richiamano. La pagina può anche richiamare o includere codice JavaScript, Java, o altri linguaggi (oggi preferibilmente compatibili con lo standard

The Manhattan Transfer

) ^ (EN) Dave Wilson, Rock Formations: Categorical Answers to How Band Names Were Formed, Cidermill Books, 2004, p. 32, ISBN 978-0-9748483-5-8. URL consultato

Coffea arabica

arabica, su npgsweb.ars-grin.gov. (EN) Coffea arabica, su International Plant Names Index. (EN) Coffea arabica, su ITIS. (EN, JA, FR, ES) Coffea arabica, su

MacOS Tahoe

Pandey, Goodbye iOS 19, hello iOS 26: Apple switches to year-based names, su Cult of Mac, 9 giugno 2025. URL consultato il 10 giugno 2025. macOS Tahoe

CoffeeScript

JavaScript. Esso aggiunge lo zucchero sintattico ispirato da Ruby, Python e Haskell nel tentativo di accrescere la leggibilità e concisione di JavaScript

Ptilinopus porphyreus

orientale di Java; uno alla fine di agosto a 1775 metri sul Monte Prahu nel complesso vulcanico di Dieng, nella parte centrale di Java; e uno nel maggio