如何判断JBOSS用于WAR文件的日志文件是什么?

时间:2014-08-07 22:18:27

标签: logging jboss log4j

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

我正在尝试调整日志记录属性,但没有成功。我已经尝试编辑modules / com / company / warname目录下的log4j.properties文件,但它没有任何效果。

我尝试通过将日志记录级别提升到ERROR来修改jboss / standalone / configuration中的logging.properties文件,但这似乎也没有做任何事情。 (我每次都重启jboss)。我的日志仍然充斥着INFO和WARN级警报。

在终端的最顶端,就在' jboss引导程序环境之后'打印,我看到以下一行:

log4j: Default initialization of overridden by log4j.defaultInitOverrideproperty.

默认初始化......什么?

1 个答案:

答案 0 :(得分:1)

几点要澄清:

  • JBoss中的logging.properties只有日志记录子系统(稍后会提供更多信息)才会启动并运行,在这种情况下子系统接管
  • 你引用log4j.properties的位置看起来很奇怪,因为你引用 module /... ,而这应该是为模块保留的路径,而不是你的应用程序本身(可能与独立与域名有关,因为我对后者更熟悉,但这是值得怀疑的。

因此假设您的app 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中的日志记录机制遵循“分层”方法,您定义记录器(始终存在默认的ROOT记录器),用于定义每个类别的日志记录行为。 记录器根据类别和级别过滤消息,并根据其配置将它们发送到处理程序,它们可以使用与链接到ROOT记录器的处理程序相同的处理程序,或链接到特定的处理程序(s)如果愿意的话。 您通常至少具有CONSOLE处理程序和FILE处理程序,但如果需要,可以添加其他处理程序

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

[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

为例
[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
    }
}

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

因此,对于此类别,所有级别为DEBUG及以上的消息都将发送给处理程序,这些消息将应用其过滤器来决定是否输出消息。 在我们的例子中,我们将CONSOLE处理程序级别设置为WARN,因此将过滤掉WARN以下的所有消息。

希望这可以回答您的问题,或至少在尝试解决问题时为您提供一些要考虑的问题。