日志记录和调试
在 Java 中可以使用一些日志记录器。日志记录要优于用 System.out.println() 往标准输入输出流中打印日志,因为:
记录的日志会有一个源名称标签,由此能更容易找出日志的来源。
记录的日志会有一个严重级别,由此能进行简单的筛选(例如关闭所有非关键性的通知)。
日志记录器允许你开启或关闭来自特定源文件的日志。
Sponge uses org.apache.logging.log4j.Logger
, not java.util.logging.Logger
.
获取 Logger
在插件初始化期间使用的 Guice 模块允许你使用 @Inject
注解字段、方法,或者构造方法以获取插件对应的 Logger,同时这一 Logger 已经被提前配置成了你的插件 ID。
备注
参见 插件的主类 以获取设置你的插件 ID 的更多信息。
示例——字段
import com.google.inject.Inject;
import org.apache.logging.log4j.Logger;
@Inject
private Logger logger;
示例——方法
private Logger logger;
@Inject
private void setLogger(Logger logger) {
this.logger = logger;
}
示例——构造方法 ( 作为示例,这里的类名是“Banana” )
// For the purpose of this example, "Banana" is the class name
private final Logger logger;
@Inject
public Banana(Logger logger) {
this.logger = logger;
}
我们建议你在你的插件主类中设置 Logger,因为这可以在你的插件主类加载时使用 Guice 实例化它。
你可以为你的插件主类添加一个 Logger 的 Getter 方法,尽管你可以不这么做。下面是一个 Getter 方法的示例。
public Logger getLogger() {
return logger;
}
发出消息
使用你的 Logger 记录一条信息是十分简单的。
备注
下面的示例假设你的插件中获取 Logger 使用的是 getLogger()
方法,也就是前一部分的做法。这自然取决于你为你的 Getter 方法起了什么名字。
getLogger().info("String");
getLogger().debug("String");
getLogger().warn("String");
getLogger().error("String");
这里的 String 表示你想要记录的内容,例如:
getLogger().warn("This is a warning!");