Logging 如何判断JBOSS在我的WAR文件中使用了什么日志文件?

Logging 如何判断JBOSS在我的WAR文件中使用了什么日志文件?,logging,jboss,log4j,Logging,Jboss,Log4j,我正在使用JBoss7。 我在jboss/standalone/deployment中部署了一个WAR文件。使用./standalone.sh运行,它将大量日志信息打印到终端窗口 我试图调整日志属性,但没有成功。我曾尝试在modules/com/company/warname目录中编辑log4j.properties文件,但没有任何效果 我试图通过将日志记录级别提高到错误来修改jboss/standalone/configuration中的logging.properties文件,但这似乎也没有

我正在使用JBoss7。 我在jboss/standalone/deployment中部署了一个WAR文件。使用./standalone.sh运行,它将大量日志信息打印到终端窗口

我试图调整日志属性,但没有成功。我曾尝试在modules/com/company/warname目录中编辑log4j.properties文件,但没有任何效果

我试图通过将日志记录级别提高到错误来修改jboss/standalone/configuration中的logging.properties文件,但这似乎也没有起到任何作用。(我每次都重新启动jboss)。我的日志中仍然充斥着信息和警告级别的警报

在终端的最顶端,在“jboss引导环境”打印出来之后,我确实看到了下面一行:

log4j: Default initialization of overridden by log4j.defaultInitOverrideproperty.
默认初始化。。。什么

需要澄清的几点:

  • JBoss中的logging.properties仅在日志子系统(稍后将提供更多信息)启动并运行之前存在,在这种情况下,子系统将接管日志子系统
  • 您所指的log4j.properties的位置似乎很奇怪,因为您所指的是模块/…,而这应该主要是为模块保留的路径,而不是您的应用程序本身(可能与standalone vs domain有关,因为我对后者比较熟悉,但值得怀疑
因此,假设您的应用程序log4j配置未被考虑在内:

日志管理通过日志子系统完成

例如,通过CLI界面对其进行管理,并且由于您关注的是终端窗口输出:

[standalone@localhost:9999 /] /subsystem=logging/console-handler=CONSOLE:read-resource(recursive=true)
{
    "outcome" => "success",
    "result" => {
        "autoflush" => true,
        "enabled" => true,
        "encoding" => undefined,
        "filter" => undefined,
        "filter-spec" => undefined,
        "formatter" => "%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n",
        "level" => "INFO",
        "name" => "CONSOLE",
        "named-formatter" => "COLOR-PATTERN",
        "target" => "System.out"
    }
}
因此,如果您更新了该级别:

[standalone@localhost:9999 /] /subsystem=logging/console-handler=CONSOLE:write-attribute(name=level,value=WARN)
控制台的液位将设置为警告

有关更细粒度配置的更多信息:

JBoss中的日志记录机制遵循一种“分层”方法,您可以定义每个类别的日志记录行为的日志记录者(始终有一个默认的根日志记录者)。 日志记录器根据类别和级别筛选消息,并根据配置将其发送到处理程序,它们可以使用与链接到根日志记录器的处理程序相同的处理程序,或者链接到特定的处理程序(如果愿意)。 通常至少有控制台处理程序和文件处理程序,但如果需要,可以添加其他处理程序

默认独立安装中的记录器列表:

[standalone@localhost:9999 /] /subsystem=logging:read-children-names(child-type=logger)
{
    "outcome" => "success",
    "result" => [
        "com.arjuna",
        "jacorb",
        "jacorb.config",
        "org.apache.tomcat.util.modeler",
        "org.jboss.as.config",
        "sun.rmi"
    ]
}
以org.jboss.as.config为例:

这意味着对于org.jboss.as.config,loglevel设置为DEBUG,而as use parents handlers意味着在该记录器的父级上定义的处理程序也将用于该记录器

因此,对于这个类别,所有级别为DEBUG及以上的消息都被发送到处理程序,处理程序将应用它们的过滤器来决定是否输出消息。 在我们的例子中,我们将控制台处理程序级别设置为WARN,以便过滤掉WARN下面的所有消息


希望这能回答你的问题,或者至少为你在解决问题时考虑一些问题。

尝试配置JBOSS-AdvestMyWorksStudio.xml来进行日志记录。
[standalone@localhost:9999 /] /subsystem=logging/logger=org.jboss.as.config:read-resource()
{
    "outcome" => "success",
    "result" => {
        "category" => "org.jboss.as.config",
        "filter" => undefined,
        "filter-spec" => undefined,
        "handlers" => undefined,
        "level" => "DEBUG",
        "use-parent-handlers" => true
    }
}