es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo configurar SmtpAppender programáticamente en log4j2

El código en el que estoy trabajando es el siguiente:

El propósito es configurar SmtpAppender de forma programática. Junto con SmtpAppender, también necesito agregar RollingFileAppender y ConsoleAppender de forma programática.

package vish;

import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.core.appender.SmtpAppender;
import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilder;
import org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilderFactory;
import org.apache.logging.log4j.core.config.builder.api.LayoutComponentBuilder;
import org.apache.logging.log4j.core.config.builder.api.RootLoggerComponentBuilder;
import org.apache.logging.log4j.core.config.builder.impl.BuiltConfiguration;

public class SmtpAppenderBuilder {

    public static void main(String[] args) {

        String pattern = "%d{MM-dd@HH\\:mm\\:ss}%-4r %-5p [%t] %37c %3x - %m%n";
        ConfigurationBuilder<builtconfiguration> builder = ConfigurationBuilderFactory.newConfigurationBuilder();
        LayoutComponentBuilder layoutBuilder = builder.newLayout("PatternLayout").addAttribute("pattern", pattern);

        RootLoggerComponentBuilder rootLogger = builder.newRootLogger(Level.DEBUG);
        builder.setStatusLevel(Level.DEBUG);
        org.apache.logging.log4j.core.appender.SmtpAppender.Builder smtpBuilder = SmtpAppender.newBuilder();
        smtpBuilder.setName("emailAppender");
        smtpBuilder.setSmtpUsername("test1@gmail.com");
        smtpBuilder.setSmtpPassword("###YpSv1925");
        smtpBuilder.setSmtpProtocol("https");
        smtpBuilder.setSmtpHost("smtp.gmail.com");
        smtpBuilder.setBufferSize(512);
        smtpBuilder.setTo("test2@gmail.com");
        smtpBuilder.setSubject("testing");

    }
}

¿Cómo debo agregar smtpAppender a la configuración o al rootLogger?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para agregar el smtpAppender a la configuración, puedes usar el método add del constructor y pasar el smtpAppender como parámetro.

    Por ejemplo:

    builder.add(smtpBuilder.build());
    

    Para agregar el smtpAppender al rootLogger, puedes establecer el componente AppenderRef con el nombre del smtpAppender.

    Por ejemplo:

    rootLogger.add(builder.newAppenderRef("emailAppender");
    

    Además, para agregar el RollingFileAppender y el Console appender, puedes seguir pasos similares:

    Para agregar el RollingFileAppender:

    FileAppender.Builder fileBuilder = builder.newAppender("fileAppender", "RollingFile")
        .addAttribute("fileName", "logs/app.log")
        .addAttribute("filePattern", "logs/app-%d{MM-dd-yyyy}.log")
        .add(layoutBuilder)
        .addComponent(triggeringPolicy)
        .addComponent(policy);
    
    rootLogger.add(builder.newAppenderRef("fileAppender"));
    
    builder.add(fileBuilder);
    

    Para agregar el Console appender:

    ConsoleAppender.Builder consoleBuilder = builder.newAppender("consoleAppender", "CONSOLE")
        .addAttribute("target", ConsoleAppender.Target.SYSTEM_OUT)
        .add(layoutBuilder);
    
    rootLogger.add(builder.newAppenderRef("consoleAppender"));
    
    builder.add(consoleBuilder);
    

    Luego, puedes construir la configuración y usarla para inicializar el LogManager:

    BuiltConfiguration config = builder.build();
    
    try {
      LogManager.setConfiguration(config);
    } catch (Exception e) {
      // manejar excepción
    }
    

Comments are closed.