Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.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
可以使用logmanger.reset()禁用java0.log文件和.lck文件的创建,但我想根据一些配置参数来执行此操作_Java_Java.util.logging - Fatal编程技术网

可以使用logmanger.reset()禁用java0.log文件和.lck文件的创建,但我想根据一些配置参数来执行此操作

可以使用logmanger.reset()禁用java0.log文件和.lck文件的创建,但我想根据一些配置参数来执行此操作,java,java.util.logging,Java,Java.util.logging,Java正在创建日志文件java0.log并将文件锁定在/root文件夹中 可以使用LogManager.reset()函数禁用此行为,但我想根据一些配置参数调用此函数 有人能建议我使用哪个配置文件来执行此操作,以及如何实现此操作吗?使用系统属性并将其指向 在Windows上: -Djava.util.logging.config.file=NUL 在Linux上: -Djava.util.logging.config.file=/dev/null 在任何平台上,您都可以简单地创建一个空文件

Java正在创建日志文件
java0.log
并将文件锁定在
/root
文件夹中

可以使用
LogManager.reset()
函数禁用此行为,但我想根据一些配置参数调用此函数

有人能建议我使用哪个配置文件来执行此操作,以及如何实现此操作吗?

使用系统属性并将其指向

在Windows上:

-Djava.util.logging.config.file=NUL
在Linux上:

-Djava.util.logging.config.file=/dev/null
在任何平台上,您都可以简单地创建一个空文件并指向它

它的作用是在启动时使用给定的文件路径(流)调用。根据合同,该方法将:

重新初始化日志属性并重新读取日志配置

当它读取日志配置时,没有要读取的新数据。因此,它的行为就好像它只是在启动时调用

如果您希望根记录器上有更多的选择性行为,那么您可以编写一个自定义类,并使用
java.util.logging.config.class
属性:

package foo.bar;

import java.io.FileInputStream;
import java.util.logging.FileHandler;
import java.util.logging.Handler;
import java.util.logging.LogManager;
import java.util.logging.Logger;

public final class LogConfig {

    public LogConfig() throws Throwable {
        //Load the default config file.
        String file = System.getProperty("java.util.logging.config.file");
        if (file != null) {
            LogManager.getLogManager().readConfiguration(new FileInputStream(file));
        }

        //Modify the logger tree if property is set.
        String key = "some.config.property";
        String v = System.getProperty(key);
        if (v == null) {
            throw new NullPointerException("System property '"
                    + key + "' was not defined");
        }

        if (Boolean.parseBoolean(v)) {
            Logger root = Logger.getLogger("");
            for (Handler h : root.getHandlers()) {
                if (h instanceof FileHandler) {
                    root.removeHandler(h);
                    h.close();
                }
            }
        }
    }
}
要使用此类,请设置以下命令行属性:

-Djava.util.logging.config.file=/path/to/file -Djava.util.logging.config.class=foo.bar.LogConfig -Dsome.config.property=true

重新初始化日志属性意味着我必须将现有logging.properties文件中的所有其他参数与我的ne参数一起添加到此新文件中,以重置LogManagerright?当我们使用此config.file系统属性时,这是否意味着忽略现有logging.properties文件中的所有其他配置参数?@yuvrajK Right。系统属性控制输入LogManager.readConfiguration的文件。它们可能会被忽略,也可能不会。操作顺序将更改最终的日志记录配置。系统属性在JVM启动时运行。