如何从记录器中删除“启用{plugin} {version}”消息?

时间:2015-01-03 04:12:21

标签: java logging bukkit

有没有办法从Bukkit中删除这些消息,以便添加自定义消息?

  

[{plugin}]正在加载{plugin} {version}
  [{plugin}]启用{plugin} {version}

我想用第3到第5行替换此图像的第1行和第2行。

2 个答案:

答案 0 :(得分:3)

是的,如果你真的想要,你可以为你的消息过滤System.out

PrintStream old = System.out;
System.setOut(new PrintStream(old) {
    @Override
    public void print(String s) {
        if (s != null && s.matches(
            ".*?\\[NoOpenHopper]\\s(Loading|Enabling)\\sNoOpenHopper.+" ))
            super.print("NoOpenHopper has been enabled!");
        super.print(s);
    }
});
你可以在你的插件的构造函数中使用它来确保执行这个过程在启用插件之前,会有效地覆盖日志记录消息。

请确保您首先了解注意事项:

  1. 你必须真的相信你的过滤技巧。如果您不确定它是否有其他功能,请不要这样做。 (如果你不知道这是做什么的,不要偷它,你实际上会破坏很多。)
  2. 这将创建一个新的PrintStream对象。您也可以使用反射(查看Proxyunreflect)而不是使用包装对象进行过滤,以便在不将垃圾堆入堆中的情况下更有效。虽然,AWT做到了这一点,但Sun做到了这一点,甚至CraftBukkit也做到了这一点,所以不用太担心。
  3. 这是日志消息的原子擦除,除非你保留old的引用,然后重置System.setOut(你真的应该或你的服务器所有者真的讨厌你),否则你无法恢复)。

答案 1 :(得分:2)

您无法。您需要更改服务器来源。

这些消息非常有用。它们可以帮助用户快速找到错误和许多其他事情。

仅仅因为它们是you should keep the console clean

  

没有理由打印诸如" {$ PluginName}之类的消息已被启用!"因为bukkit会自动执行此操作。