CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-org-apache-logging-log4j--log4j-1-2-api

The Apache Log4j 1.x Compatibility API providing a bridge to Log4j 2.x implementations

Pending
Overview
Eval results
Files

configuration.mddocs/

Configuration Management

Configuration management provides multiple approaches to configure Log4j 1.x compatibility layer including properties files, XML configuration, and programmatic setup.

Configuration Classes

PropertyConfigurator

public class PropertyConfigurator {
    // Configure from properties file
    public static void configure(String configFilename);
    public static void configure(URL configURL);
    public static void configure(InputStream inputStream);
    public static void configure(Properties properties);
    
    // Configure with custom class loader
    public static void configure(Properties properties, LoggerRepository repository);
    
    // Watch for configuration changes
    public static void configureAndWatch(String configFilename);
    public static void configureAndWatch(String configFilename, long delay);
}

Parameters:

  • configFilename - Path to properties configuration file
  • configURL - URL pointing to configuration resource
  • inputStream - InputStream containing configuration data
  • properties - Properties object with configuration
  • repository - LoggerRepository for configuration context
  • delay - Delay in milliseconds for configuration file watching

DOMConfigurator

public class DOMConfigurator {
    // Configure from XML file or resource
    public static void configure(String filename);
    public static void configure(URL configURL);
    public static void configure(InputStream inputStream);
    public static void configure(Element element);
    
    // Configure with custom logger repository
    public static void configure(Element element, LoggerRepository repository);
    
    // Watch for configuration changes
    public static void configureAndWatch(String filename);
    public static void configureAndWatch(String filename, long delay);
}

Parameters:

  • filename - Path to XML configuration file
  • configURL - URL pointing to XML configuration
  • inputStream - InputStream containing XML configuration
  • element - DOM Element containing configuration
  • repository - LoggerRepository for configuration context
  • delay - Delay in milliseconds for file watching

BasicConfigurator

public class BasicConfigurator {
    // Simple console configuration
    public static void configure();
    public static void configure(Appender appender);
    
    // Reset configuration
    public static void resetConfiguration();
}

Parameters:

  • appender - Appender to use for basic configuration

OptionHandler Interface

public interface OptionHandler {
    // Activate options after configuration
    void activateOptions();
}

Configuration Properties Format

Basic Properties Configuration

# Root logger configuration
log4j.rootLogger=INFO, console, file

# Console appender
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{HH:mm:ss} %-5p %c{1} - %m%n

# File appender
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=application.log
log4j.appender.file.Append=true
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ISO8601} [%t] %-5p %c - %m%n

# Package-specific loggers
log4j.logger.com.mycompany.dao=DEBUG
log4j.logger.org.springframework=WARN
log4j.logger.org.apache.http=INFO

Rolling File Configuration

# Rolling file appender
log4j.appender.rolling=org.apache.log4j.RollingFileAppender
log4j.appender.rolling.File=app.log
log4j.appender.rolling.MaxFileSize=10MB
log4j.appender.rolling.MaxBackupIndex=5
log4j.appender.rolling.layout=org.apache.log4j.PatternLayout
log4j.appender.rolling.layout.ConversionPattern=%d %p %c - %m%n

XML Configuration Format

Basic XML Configuration

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    
    <!-- Console appender -->
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <param name="Target" value="System.out"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/>
        </layout>
    </appender>
    
    <!-- File appender -->
    <appender name="file" class="org.apache.log4j.FileAppender">
        <param name="File" value="application.log"/>
        <param name="Append" value="true"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{ISO8601} [%t] %-5p %c - %m%n"/>
        </layout>
    </appender>
    
    <!-- Package loggers -->
    <logger name="com.mycompany.dao">
        <level value="DEBUG"/>
    </logger>
    
    <logger name="org.springframework">
        <level value="WARN"/>
    </logger>
    
    <!-- Root logger -->
    <root>
        <priority value="INFO"/>
        <appender-ref ref="console"/>
        <appender-ref ref="file"/>
    </root>
    
</log4j:configuration>

Programmatic Configuration

Using PropertyConfigurator

import org.apache.log4j.PropertyConfigurator;
import java.util.Properties;

public class ConfigurationExample {
    public void configureLogging() {
        // From file
        PropertyConfigurator.configure("log4j.properties");
        
        // From URL
        URL configUrl = getClass().getResource("/log4j.properties");
        PropertyConfigurator.configure(configUrl);
        
        // From Properties object
        Properties props = new Properties();
        props.setProperty("log4j.rootLogger", "INFO, console");
        props.setProperty("log4j.appender.console", "org.apache.log4j.ConsoleAppender");
        props.setProperty("log4j.appender.console.layout", "org.apache.log4j.PatternLayout");
        props.setProperty("log4j.appender.console.layout.ConversionPattern", "%d %-5p %c - %m%n");
        PropertyConfigurator.configure(props);
    }
}

Using DOMConfigurator

import org.apache.log4j.xml.DOMConfigurator;
import java.net.URL;

public class XMLConfigurationExample {
    public void configureFromXML() {
        // From file
        DOMConfigurator.configure("log4j.xml");
        
        // From URL
        URL configUrl = getClass().getResource("/log4j.xml");
        DOMConfigurator.configure(configUrl);
        
        // Watch for changes
        DOMConfigurator.configureAndWatch("log4j.xml", 60000); // Check every minute
    }
}

Using BasicConfigurator

import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.ConsoleAppender;
import org.apache.log4j.PatternLayout;

public class BasicConfigurationExample {
    public void setupBasicLogging() {
        // Simple console logging
        BasicConfigurator.configure();
        
        // With custom appender
        ConsoleAppender appender = new ConsoleAppender(
            new PatternLayout("%d %-5p %c - %m%n"),
            ConsoleAppender.SYSTEM_OUT
        );
        BasicConfigurator.configure(appender);
    }
}

Configuration File Watching

Automatic Configuration Reloading

import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.xml.DOMConfigurator;

public class ConfigurationWatching {
    public void setupWatching() {
        // Watch properties file for changes every 30 seconds
        PropertyConfigurator.configureAndWatch("log4j.properties", 30000);
        
        // Watch XML file for changes every 60 seconds
        DOMConfigurator.configureAndWatch("log4j.xml", 60000);
    }
}

Manual Configuration Reset

import org.apache.log4j.LogManager;
import org.apache.log4j.BasicConfigurator;

public class ConfigurationReset {
    public void resetAndReconfigure() {
        // Reset all configuration
        LogManager.resetConfiguration();
        
        // Reconfigure with new settings
        PropertyConfigurator.configure("new-log4j.properties");
        
        // Or use basic configuration
        BasicConfigurator.configure();
    }
}

Configuration Best Practices

Resource Loading

import org.apache.log4j.PropertyConfigurator;
import java.net.URL;
import java.io.InputStream;

public class ResourceConfiguration {
    public void configureFromClasspath() {
        // Load from classpath
        URL configUrl = getClass().getClassLoader().getResource("log4j.properties");
        if (configUrl != null) {
            PropertyConfigurator.configure(configUrl);
        }
        
        // Load as stream
        InputStream configStream = getClass().getResourceAsStream("/log4j.properties");
        if (configStream != null) {
            PropertyConfigurator.configure(configStream);
        }
    }
}

Install with Tessl CLI

npx tessl i tessl/maven-org-apache-logging-log4j--log4j-1-2-api

docs

appenders.md

builders.md

configuration.md

context.md

index.md

layouts.md

logging.md

spi.md

tile.json