java 如何让 jboss 显示 log.debug 消息?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/11121778/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How do I get jboss to display log.debug messages?
提问by stackoverflow
myController.java
我的控制器
private static final Logger log = Logger.getLogger(myController.class
.getName());
@GET
@Path("/testDebug")
public String testDebug(@Context final ServletContext context)
{
log.error("This is an error message");
log.debug("This is a debug message");
log.fatal("This is fatal message");
log.warn("This is a warn message");
log.info("This is a info message");
return "Test Page. Debug Mode is on =" + log.isDebugEnabled();
}
jboss-log4j.xml
jboss-log4j.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<!-- ===================================================================== -->
<!-- -->
<!-- Log4j Configuration -->
<!-- -->
<!-- ===================================================================== -->
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
<!-- ================================= -->
<!-- Preserve messages in a local file -->
<!-- ================================= -->
<!-- A time/date based rolling appender -->
<appender name="FILE" class="org.jboss.logging.appender.DailyRollingFileAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="File" value="${jboss.server.log.dir}/server.log"/>
<param name="Append" value="false"/>
<!-- Rollover at midnight each day -->
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<layout class="org.apache.log4j.PatternLayout">
<!-- The default pattern: Date Priority [Category] Message\n -->
<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
-->
</layout>
</appender>
<!-- ============================== -->
<!-- Append messages to the console -->
<!-- ============================== -->
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="Target" value="System.out"/>
<param name="Threshold" value="DEBUG"/>
<layout class="org.apache.log4j.PatternLayout">
<!-- The default pattern: Date Priority [Category] Message\n -->
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
</layout>
</appender>
<!-- ================ -->
<!-- Limit categories -->
<!-- ================ -->
<!-- Limit the org.apache category to INFO as its DEBUG is verbose -->
<category name="org.apache">
<priority value="INFO"/>
</category>
<!-- Limit the org.jboss.serial (jboss-serialization) to INFO as its DEBUG is verbose -->
<category name="org.jboss.serial">
<priority value="INFO"/>
</category>
<!-- Limit the org.jgroups category to WARN as its INFO is verbose -->
<category name="org.jgroups">
<priority value="WARN"/>
</category>
<!-- Limit the jacorb category to WARN as its INFO is verbose -->
<category name="jacorb">
<priority value="WARN"/>
</category>
<!-- Limit JBoss categories -->
<category name="org.jboss">
<priority value="INFO"/>
<appender-ref ref="CONSOLE"/>
</category>
<!-- Limit the JSR77 categories -->
<category name="org.jboss.management">
<priority value="INFO"/>
</category>
<!-- This is is the package to myController.java -->
<category name="com.myPackage.src">
<priority value="DEBUG"/>
</category>
<!-- ======================= -->
<!-- Setup the Root category -->
<!-- ======================= -->
<root>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</log4j:configuration>
Desired Result
预期结果
when path /testDebug
is hit get the message: "This is a debug message"
当路径/testDebug
被点击时得到消息:“这是一条调试消息”
Problem:
问题:
I get all message to display exceptdebug
我得到了除调试之外的所有消息
10:29:49,440 INFO [STDOUT] 10:29:49,440 ERROR [myController] This is an error message
10:29:49,440 INFO [STDOUT] 10:29:49,440 FATAL [myController] This is fatal message
10:29:49,440 INFO [STDOUT] 10:29:49,440 WARN [myController] This is a warn message
10:29:49,440 INFO [STDOUT] 10:29:49,440 INFO [myController] This is a info message
Why cant I get debug message to display?
为什么我无法显示调试消息?
回答by whyceewhite
Refer to this questionfor updated information on seeing debug logging with Jboss 7.1.1+.
有关使用 Jboss 7.1.1+ 查看调试日志的更新信息,请参阅此问题。
Some points:
几点:
Your class
myController
uses the logging as expected. (Another answer claims that you incorrectly instantiated your logger; not true.)Remove the log4j.xml (or logback.xml etc) configuration file from your project (i.e., from
main/resources/META-INF
)In your
pom.xml
, make sure that yourslf4j
dependency has a scope of provided(Jboss will provide this). Further, do not include the log4j (or logback etc) implementation dependencies. For example, here's what your logging dependency section may look like:<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.7</version> <scope>provided</scope> </dependency>
Make sure that you have a loggerentry for your package in your
standalone/configuration/standalone.xml
file.<logger category="com.myPackage.src"> <level name="DEBUG"/> </logger>
Make sure that console-handlerand periodic-rotating-file-handlerhandlers have a level of DEBUG. (By default, they are INFO. They will need to be DEBUG or else your debug statements will be ignored.)
您的课程
myController
按预期使用日志记录。(另一个答案声称您错误地实例化了记录器;不是真的。)从您的项目(即 from
main/resources/META-INF
)中删除 log4j.xml(或 logback.xml 等)配置文件在你的 中
pom.xml
,确保你的slf4j
依赖有一个提供的范围(Jboss 会提供这个)。此外,不要包含 log4j(或 logback 等)实现依赖项。例如,您的日志依赖项部分可能如下所示:<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.7</version> <scope>provided</scope> </dependency>
确保您的文件中有一个包的记录器条目
standalone/configuration/standalone.xml
。<logger category="com.myPackage.src"> <level name="DEBUG"/> </logger>
确保控制台处理程序和定期轮换文件处理程序处理程序具有调试级别。(默认情况下,它们是 INFO。它们需要是 DEBUG,否则您的调试语句将被忽略。)
Note, there is a CLI that allows you to update the logging. I do mine manually but it's probably wise to use the CLI.
请注意,有一个 CLI 允许您更新日志记录。我手动完成,但使用 CLI 可能是明智的。
Here's an abbreviated version of what your standalone.xml
logging portion could look like:
这是您的standalone.xml
日志记录部分的缩写版本:
<subsystem xmlns="urn:jboss:domain:logging:2.0">
<console-handler name="CONSOLE">
<level name="DEBUG"/>
<formatter>
<named-formatter name="COLOR-PATTERN"/>
</formatter>
</console-handler>
<periodic-rotating-file-handler name="FILE" autoflush="true">
<level name="DEBUG"/>
<formatter>
<named-formatter name="PATTERN"/>
</formatter>
<file relative-to="jboss.server.log.dir" path="server.log"/>
<suffix value=".yyyy-MM-dd"/>
<append value="true"/>
</periodic-rotating-file-handler>
<logger category="com.myPackage.src">
<level name="DEBUG"/>
</logger>
<root-logger>
<level name="INFO"/>
<handlers>
<handler name="CONSOLE"/>
<handler name="FILE"/>
</handlers>
</root-logger>
<formatter name="PATTERN">
<pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
</formatter>
<formatter name="COLOR-PATTERN">
<pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
</formatter>
</subsystem>
回答by Suraj Chandran
Can you try doing so:
你可以尝试这样做吗:
<category name="com.myPackage.src">
<priority value="DEBUG"/>
</category>
回答by James R. Perkins
Your category is defined incorrectly. When you instantiate your logger you're using Class.getName()
which returns the fully qualified class name. You define your logger category with only the package name which means debugging is not turned on for the category com.myPackage.src.myController
.
您的类别定义不正确。当您实例化您正在使用的记录器时,Class.getName()
它会返回完全限定的类名。您仅使用包名称定义记录器类别,这意味着不会为该类别打开调试com.myPackage.src.myController
。
You need to either change the way you instantiate your logger
您需要更改实例化记录器的方式
private static final Logger log = Logger.getLogger(myController.class.getPackage().getName());
or change your category definition
或更改您的类别定义
<category name="com.myPackage.src.myController">
<priority value="DEBUG"/>
</category>
On a side not, packages should not have uppercase characters and class names should always begin with an uppercase letter.
另一方面,包不应该有大写字符,类名应该总是以大写字母开头。
回答by Uday Yadav
Detailed information could be found at: https://docs.jboss.org/author/display/AS71/Logging+Configuration
<subsystem xmlns="urn:jboss:domain:logging:1.0">
<console-handler name="CONSOLE" autoflush="true">
<level name="DEBUG"/>
<formatter>
<pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
</formatter>
</console-handler>
<periodic-rotating-file-handler name="FILE" autoflush="true">
<formatter>
<pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
</formatter>
<file relative-to="jboss.server.log.dir" path="server.log"/>
<suffix value=".yyyy-MM-dd"/>
</periodic-rotating-file-handler>
<logger category="com.arjuna">
<level name="WARN"/>
</logger>
[...]
<root-logger>
<level name="DEBUG"/>
<handlers>
<handler name="CONSOLE"/>
<handler name="FILE"/>
</handlers>
</root-logger>
</subsystem>
1.the changes can be made in standalone.xml 2.the above solution is to show how to see the debug messages of logs in jboss this will solve the above problem
1.可以在standalone.xml中进行更改 2.上面的解决方案是展示如何在jboss中查看日志的调试信息,这样就解决了上面的问题