简体   繁体   English

配置log4j2以从applet使用

[英]Configure log4j2 for use from applet

Where log4j2.xml should be placed for use in applet? 在applet中应放置log4j2.xml的位置? Can it log both to Java Console and to files on user computer? 它可以同时登录到Java Console和用户计算机上的文件吗?

I placed in applet resources conf/log4j2.xml and read it from applet. 我将其放在applet资源conf / log4j2.xml中,并从applet中读取了它。 Applet loads it incorrectly, so i fix the fields from the applet code: Applet错误地加载了它,因此我修复了applet代码中的字段:

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);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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