ロギングとデバッグ
There are a few logging frameworks available for use in Java. Logging is preferable to printing to stdout or stderr with
System.out.println()
for a number of reasons:
Logged messages are labeled with a source name, making it easier to figure out where the logged messages are coming from.
Logged messages have a severity level which allows for simple filtering (e.g. disable all non-critical notices).
The available logger frameworks allow you to enable or disable messages from certain sources.
Sponge は java.util.logging.Logger
ではなく org.slf4j.Logger
を使用しています。
Logger を取得
The Guice module used during the initialization of plugins has a plugin-scoped logger. This allows you to annotate a
field, method, or constructor with @Inject
to get the logger for your plugin, which is pre-configured with the
correct plugin ID.
注釈
See 主要なプラグインのクラス for information on configuring your plugin ID.
例 - フィールド
import com.google.inject.Inject;
import org.slf4j.Logger;
@Inject
private Logger logger;
例 - メソッド
private Logger logger;
@Inject
private void setLogger(Logger logger) {
this.logger = logger;
}
例 - コンストラクタ
// For the purpose of this example, "Banana" is the class name
private Logger logger;
@Inject
public Banana(Logger logger) {
this.logger = logger;
}
It is recommended to set your logger in your main plugin class, as it is instantiated with the Guice injector when the plugin is loaded.
Creating a getter method for your logger in the same class in which it was set is also ideal, although optional. An example getter method is illustrated below.
public Logger getLogger() {
return logger;
}
メッセージの出力
Logger を使ってメッセージを出力するのは、とてもシンプルです。
注釈
The following example assumes that the getter method for your logger is named getLogger()
, as shown in the
previous section. This may differ for you depending on what you named your getter method.
getLogger().info(String);
getLogger().debug(String);
getLogger().warn(String);
getLogger().error(String);
The String is the message you wish to emit. For example:
getLogger().warn("This is a warning!");