【发布时间】:2011-04-19 15:27:45
【问题描述】:
我正在使用 ProcessBuilder 以编程方式启动 JVM。为清楚起见,我们将使用 ProcessBuilder JVM A 的 JVM 称为启动 JVM B 的 JVM。JVM B 使用 slf4j/log4j 进行日志记录。
这里的问题是我在 JVM B 中执行的类是我有时在调试器中运行的类,在调试器中使用控制台输出会很有帮助。
如果我使用 ProcessBuilder 运行 JVM B,那么我不需要控制台输出,因为这需要 JVM A 读取进程的输出或 JVM B 挂起。
有没有办法从 JVM B 中控制 slf4j 或 log4j,以便如果我在 JVM 中的主类认为使用控制台进行日志记录不合适,它不会尝试这样做? (例如,它禁用基于控制台的附加程序)我宁愿不必维护单独的 log4j.configuration 文件,但如果需要,我会这样做。
例如在我的主要课程中
static {
if (shouldntUseConsole())
{
?????
}
}
我可以弄清楚如何实现shouldntUseConsole(),但我不知道为????? 放什么。
【问题讨论】: