首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何禁用Javalin内部的Jetty日志记录?

如何禁用Javalin内部的Jetty日志记录?
EN

Stack Overflow用户
提问于 2022-10-29 20:40:17
回答 1查看 67关注 0票数 1

我正在开发一个“我的世界”插件,并想使用Javalin。我可以轻松地用JavalinLogger.enabled = false禁用Javali日志,但我不能禁用jetty日志。

在启动Javalin服务器时,我总是得到以下输出:

代码语言:javascript
复制
[22:24:32 INFO]: [org.eclipse.jetty.server.Server] jetty-11.0.12; built: 2022-09-14T02:38:00.723Z; git: d5b8c29485f5f56a14be5f20c2ccce81b93c5555; jvm 17+35-LTS-2724
[22:24:32 INFO]: [org.eclipse.jetty.server.session.DefaultSessionIdManager] Session workerName=node0
[22:24:32 INFO]: [org.eclipse.jetty.server.handler.ContextHandler] Started i.j.j.@3293e900{/,null,AVAILABLE}
[22:24:32 INFO]: [org.eclipse.jetty.server.AbstractConnector] Started ServerConnector@4c57aa18{HTTP/1.1, (http/1.1)}{0.0.0.0:80}
[22:24:32 INFO]: [org.eclipse.jetty.server.Server] Started Server@34f89e1c{STARTING}[11.0.12,sto=0] @4657581ms

这些是我在pom.xml中的依赖项:

代码语言:javascript
复制
<dependency>
    <groupId>org.spigotmc</groupId>
    <artifactId>spigot-api</artifactId>
    <version>1.19.2-R0.1-SNAPSHOT</version>
    <scope>provided</scope>
</dependency>

<dependency>
    <groupId>io.javalin</groupId>
    <artifactId>javalin</artifactId>
    <version>5.1.2</version>
</dependency>

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>2.0.3</version>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.13.4.2</version>
</dependency>

我已经尝试了以下几种方法:

设置不同系统属性的org.eclipse.jetty.LEVEL

  • Adding slf4j-simple和a simplelogger.properties
  • 尝试了与log4j
  • 和logback

相同的方法。

编辑1:仅仅实现了slf4j的源代码-简单,我意识到jetty根本没有使用它。没有创建SimpleLogger的实例。但是,如果我完全删除slf4j提供程序,jetty就不再进行日志记录了,但是Javalin发出了一个巨大的警告:没有找到提供程序

编辑2:重新创建问题的步骤

plugin

  • Choose
  1. 在IntelliJ中创建了一个新的项目,其中包含了“我的世界”
  2. Spigot和版本1.19.2
  3. I编辑了两个文件:

pom.xml,添加了以下依赖项:

代码语言:javascript
复制
<dependency>
    <groupId>io.javalin</groupId>
    <artifactId>javalin</artifactId>
    <version>5.1.2</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>2.0.3</version>
</dependency>

具有onEnable()方法的“主”java文件

代码语言:javascript
复制
@Override
public void onEnable() {
    // Plugin startup logic
    System.setProperty(org.slf4j.simple.SimpleLogger.DEFAULT_LOG_LEVEL_KEY, "OFF");

    JavalinLogger.enabled = false;

    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    Thread.currentThread().setContextClassLoader(this.getClassLoader());
    Javalin app = Javalin.create();
    Thread.currentThread().setContextClassLoader(classLoader);
    app.get("/", ctx -> ctx.result("Hello World!"));
    app.start();
}

这将产生以下输出(在第1.19.2号文件上):

代码语言:javascript
复制
[02:39:47 INFO]: [Javalintest] Enabling Javalintest v1.0-SNAPSHOT
[02:39:48 INFO]: [org.eclipse.jetty.server.Server] jetty-11.0.12; built: 2022-09-14T02:38:00.723Z; git: d5b8c29485f5f56a14be5f20c2ccce81b93c5555; jvm 17+35-LTS-2724
[02:39:48 INFO]: [org.eclipse.jetty.server.session.DefaultSessionIdManager] Session workerName=node0
[02:39:48 INFO]: [org.eclipse.jetty.server.handler.ContextHandler] Started i.j.j.@2f6e3e6c{/,null,AVAILABLE}
[02:39:48 INFO]: [org.eclipse.jetty.server.AbstractConnector] Started ServerConnector@17e2d1ec{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
[02:39:48 INFO]: [org.eclipse.jetty.server.Server] Started Server@5f91e5cc{STARTING}[11.0.12,sto=0] @14943ms
[02:39:48 INFO]: Running delayed init tasks
[02:39:48 INFO]: Done (4.288s)! For help, type "help"
[02:39:48 INFO]: Timings Reset
EN

回答 1

Stack Overflow用户

发布于 2022-10-30 12:08:40

Spigot / Bukkit使用java.util.logging作为它的环境(这很容易与您的独立环境所使用的环境不同)。

在Spigot / Bukkit中访问记录器的典型方法是..。

代码语言:javascript
复制
Logger logger = Bukkit.getLogger();
logger.info("This is my log message");

当您在Spigot / Bukkit中运行时,只有一个Logger。

这个记录器是一个java.util.logging.Logger实例。

请参阅:https://hub.spigotmc.org/stash/projects/SPIGOT/repos/bukkit/browse/src/main/java/org/bukkit/Bukkit.java#819

这意味着您必须拥有一个用于slf4j和Jetty日志记录的有效环境。

要做到这一点,请确保Spigot / Bukkit环境中存在slf4j-jdk14依赖项以及slf4j-api依赖项。小心这些可能是在您的Spigot / Bukkit环境中运行的不同插件的帮助下出现的,不要踩在它们上。

现在,一旦为依赖项设置了有效的设置,就需要配置日志记录所做的工作。

最简单的解决方案就是将org.eclipse.jetty树设置为更严格的级别。

代码语言:javascript
复制
// using java.util.logging
Logger logger = Logger.getLogger("org.eclipse.jetty");
logger.setLevel(Level.WARN); // good idea to see bad issues.

请记住,您正在使用Spigot / Bukkit环境中的许多其他插件操作,在您之前,另一个插件可能已经初始化了javalin,从而使上面的代码行变得毫无用处(因为它发生得太晚了)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74248672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档