我正在使用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.
默认初始化......什么?
答案 0 :(得分:1)
几点要澄清:
因此假设您的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以下的所有消息。
希望这可以回答您的问题,或至少在尝试解决问题时为您提供一些要考虑的问题。