[英]Eclipse E4 RCP Logger - Get calling class or package
我必須使用單獨的 class 來登錄,而不是在我想登錄的每個 class 中直接調用 LOGGER。
我正在使用以下方法:
import org.eclipse.e4.core.services.log.Logger
class A {
static Logger logger = PlatformUI.getWorkbench().getService(org.eclipse.e4.core.services.log.Logger.class)
public static void info(String message) {
logger.info(message);
}
}
class B {
A.info("Foobar");
}
現在,當我調用 Info() 方法時,它會在 .log 文件中寫入以下內容:“[...] org.eclipse.e4.ui.workbench [...] !MESSAGE Foobar”
問題:如何在不在特定 class 中實現記錄器的情況下記錄從中調用記錄器的 class。我希望它記錄類似“.MESSAGE Class A Foobar”的內容。 所以我知道日志條目來自哪個 class 或至少 Package。 謝謝!
Logger
class Javadoc 表示它不適合最終用戶使用。 PlatformUI
不適用於純 e4(您不能使用org.eclipse.ui.xxx
插件中的任何內容)。
相反,您可以使用Platform.getLog()
返回的ILog
接口。 Java 9 及以后的StackWalker
可用於獲取調用者。
我使用類似的東西:
public final class Log
{
/** The stack walker to get the caller */
private static final StackWalker Stack_Walker = StackWalker.getInstance(StackWalker.Option.RETAIN_CLASS_REFERENCE);
public static void info(final String msg)
{
final var caller = Stack_Walker.getCallerClass();
Platform.getLog(caller).info(msg);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.