Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在jetty中启用登录?_Java_Jetty_Embedded Jetty - Fatal编程技术网

Java 如何在jetty中启用登录?

Java 如何在jetty中启用登录?,java,jetty,embedded-jetty,Java,Jetty,Embedded Jetty,我试图调试我的案例,其中简单的ActiveWeb应用程序没有在Jetty下运行。它的行为就像不存在任何用于请求处理的类一样,并返回错误404 问题不在于ActiveWeb。是关于码头的。如何发现Jetty有一些web应用程序,它有一个带注释的类,并将在HTTP请求上执行它 目前我已经下载了Jetty,它可以正常工作。不幸的是,它没有日志记录。当404错误返回时,stdout或stderr中不显示任何内容,logs子目录中不显示任何文件 如何在jetty中启用登录 这里和这里的文件不清楚,也没有争

我试图调试我的案例,其中简单的ActiveWeb应用程序没有在Jetty下运行。它的行为就像不存在任何用于请求处理的类一样,并返回错误404

问题不在于ActiveWeb。是关于码头的。如何发现Jetty有一些web应用程序,它有一个带注释的类,并将在HTTP请求上执行它

目前我已经下载了Jetty,它可以正常工作。不幸的是,它没有日志记录。当404错误返回时,
stdout
stderr
中不显示任何内容,
logs
子目录中不显示任何文件

如何在jetty中启用登录

这里和这里的文件不清楚,也没有争议

例如,第一页说Jetty不使用任何JavaLoggin框架,但也要求用户选择一个。第二页提供了一些配置示例,但没有说明该代码应放在何处。

更新(2020年7月)Jetty 10及更新版本的答案 从Jetty 10.0.0开始,不再有“Jetty Logging”外观。
码头工程

Jetty 9及更早版本的原始答案 文档是正确的,因为术语“Java日志框架”通常与现代日志框架相关联,如Java.util.Logging、slf4j、logback、log4j、commons日志、logkit等

这是正确的,Jetty不使用任何这些

Jetty日志记录早于标准化日志记录框架的所有这些工作。(Jetty,其测井层创建于1995年)

这就是Jetty logging(以及在文档站点)在设置和配置方面所做的工作

默认行为:

  • 如果存在于类路径中,它将向slf4j发出日志事件,以使用处理程序进行处理
  • 回退到,发送到System.err
配置:

  • 指定要使用的日志记录实现。 选择包括:
这可以通过三种不同的方式实现

  • 使用系统属性设置日志impl
  • #3种不同的选项
    -Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.StdErrLog
    -Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.Slf4jLog
    -Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.JavaUtilLog
    
  • 使用从类路径找到的
    jetty logging.properties
    self discover/configuration
  • :

    #配置System.err输出
    org.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.StdErrLog
    #将StdErrLog配置为在默认值为WARN或更高级别时记录所有jetty命名空间
    org.eclipse.jetty.LEVEL=WARN
    #将StdErrLog配置为在调试或更高级别记录特定于websocket的命名空间
    org.eclipse.jetty.websocket.LEVEL=DEBUG
    
  • 使用代码设置
  • 这对于那些使用

    import org.eclipse.jetty.util.log.log;
    导入org.eclipse.jetty.util.log.StdErrLog;
    setLog(新的StdErrLog());
    
    建议和注意事项:

    Jetty服务器启动的输出将为您提供有关它正在使用的日志实现的提示

    正常/默认行为:

    请注意,这要么没有名称空间声明,要么在其输出中有高度缩写的名称空间。这说明
    stderlog
    正在使用中

    如果正在使用slf4j:


    这是
    slf4j
    ->
    logback
    的默认输出。这里的整体结构与
    StdErrLog
    产生的结构非常不同,因此我现在可以看出jetty是通过
    Slf4jLog
    实现发射的。

    在我的例子中,我通过遵循文档页()中的建议并在start.ini文件中添加以下行来解决这个问题: --模块=控制台捕获


    我知道这只是解决你问题的一种方法,但对我来说效果很好。重新启动服务后,我可以在logs子目录中看到一个日志文件

    很好的答案,但即使尝试了所有这些,我也无法看到调试日志消息。我也尝试使用logger.setDebugEnabled(true)设置debug,但是当我执行
    logger.debug(“某些消息”,新异常”)
    时,我没有得到任何输出。在使用info()或warn()时有效不过,日志级别的配置由您选择的记录器实现决定。对于stderlog,其属性位于
    jetty logging.properties
    中。对于java.util.logging,其完全位于java.util.logging中。对于slf4j,其为您选择的slf4j实现(例如slf4j-log12意味着您的log4j.xml控制它)等等…为了使slf4j正常工作,请将适当的JAR添加到lib文件夹。我的jetty 9.3.8只有sfl4j api,Slf4jLog文档告诉我默认情况下使用的是NOPlogger。因此,如果我确定我的jetty使用的是Slfj4jLog,我可以如何轻松地修改日志级别?通过log4j.properties文件?@zygimantus请打开一个新问题,或查找现有问题(你的话题现在应该有很多答案了)。
    2014-09-11 10:48:38.726:INFO::main: Logging initialized @378ms
    2014-09-11 10:48:39.067:INFO:oejdp.ScanningAppProvider:main: Deployment monitor [file:/Users/joakim/Code/Jetty/distros/jetty-distribution-9.2.1.v20140609/demo-base/webapps/] at interval 1
    
    10:50:18.871 [main] INFO  org.eclipse.jetty.util.log - Logging initialized @352ms
    10:50:19.102 [main] INFO  o.e.j.d.p.ScanningAppProvider - Deployment monitor [file:/Users/joakim/Code/Jetty/distros/jetty-distribution-9.2.1.v20140609/demo-base/webapps/] at interval 1