Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 配置log4j2以从小程序使用_Java_Logging_Applet_Log4j2 - Fatal编程技术网

Java 配置log4j2以从小程序使用

Java 配置log4j2以从小程序使用,java,logging,applet,log4j2,Java,Logging,Applet,Log4j2,应将log4j2.xml放在何处以便在小程序中使用?它能同时记录到Java控制台和用户计算机上的文件吗?我将它放在applet资源conf/log4j2.xml中,并从applet读取它。小程序加载不正确,因此我修复了小程序代码中的字段: public static Logger getLogger(Class className) { //get logger configuration LoggerContext loggerContext = Configurator.i

应将log4j2.xml放在何处以便在小程序中使用?它能同时记录到Java控制台和用户计算机上的文件吗?

我将它放在applet资源conf/log4j2.xml中,并从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);
}

“它可以同时登录到Java控制台和用户计算机上的文件吗?”只有当代码由您进行数字签名并且最终用户信任时才可以。是的,它已签名。如何将log4j2.xml传递给applet?日志将显示在用户磁盘上的哪个位置?