简体   繁体   中英

Configure log4j2 for use from applet

Where log4j2.xml should be placed for use in applet? Can it log both to Java Console and to files on user computer?

I placed in applet resources conf/log4j2.xml and read it from applet. Applet loads it incorrectly, so i fix the fields from the applet code:

public static Logger getLogger(Class className) {

    //get logger configuration
    LoggerContext loggerContext = Configurator.initialize("client", className.getClassLoader(), className.getClassLoader().getResource("conf/log4j2.xml").getFile());
    Configuration configuration = loggerContext.getConfiguration();

    //set root logger to desired level
    LoggerConfig loggerConfig = configuration.getLoggerConfig("");
    loggerConfig.setLevel(Level.INFO);

    //obtain appender
    Appender appender = obtainAppender(configuration);

    //get logger for required class
    org.apache.logging.log4j.core.Logger loggerForClass = loggerContext.getLogger(className.getName());

    //associate logger for required class with just created appender
    configuration.addLoggerAppender(loggerForClass, appender);

    return loggerForClass;
}

private static Appender obtainAppender(Configuration configuration) {

    //create appender
    TriggeringPolicy[] triggeringPolicies = {OnStartupTriggeringPolicy.createPolicy(), TimeBasedTriggeringPolicy.createPolicy("5", "true"), SizeBasedTriggeringPolicy.createPolicy("5 MB")};
    TriggeringPolicy triggeringPolicy = CompositeTriggeringPolicy.createPolicy(triggeringPolicies);
    return RollingFileAppender.createAppender(CLIENT_LOG_PATH + FileUtils.FILE_SEPARATOR + "my_client.log",
            CLIENT_LOG_PATH + FileUtils.FILE_SEPARATOR + "/$${date:yyyy-MM}/my_client-%d{MM-dd-yyyy-HH-mm}-%i.log",
            "", APPLET_APPENDER,
            "true", "true",
            triggeringPolicy, null,
            PatternLayout.createLayout("%d{dd/MM/yyyy HH:mm:ss} %-5p [%t] [%c{1}] %m%n", configuration, null, "UTF-8"),
            null, "true", configuration);
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM