可以使用logmanger.reset()禁用java0.log文件和.lck文件的创建,但我想根据一些配置参数来执行此操作
Java正在创建日志文件可以使用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 在任何平台上,您都可以简单地创建一个空文件
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启动时运行。