我在一个应用程序中使用Log4j,我也使用Axis2和Jetty Web服务器。
我配置了Log4J属性文件,以便在调试优先级时排除这些类的日志记录。但是当我这样做时,其他优先级消息也开始被排除在主记录器之外。
我是否有办法告诉Log4j我只想在从我的类中记录调试日志时从这些类中记录INFO日志?
这就是我所做的:
#Jetty Server and Axis2
log4j.category.org.apache.axiom=DEBUG
log4j.additivity.org.apache.axiom=false
log4j.category.org.apache.axis2=DEBUG
log4j.additivity.org.apache.axis2=false
################# MAIN LOGGER #################
log4j.rootCategory=DEBUG, mainLogger
#File configuration
但正如我所说,此配置还会从主记录器中排除INFO消息。
答案 0 :(得分:4)
不,将根级别设置为DEBUG,然后
log4j.category.org.apache.axiom=INFO
log4j.category.org.apache.axis2=INFO
另外,请勿将加法设置为false
。
当您从头开始时,您可能希望立即使用更现代的XML配置格式。在那里,它看起来像这样:
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="FILE" class="org.apache.log4j.RollingFileAppender">
...
</appender>
<category name="com.apache.axiom">
<priority value="INFO" />
</category>
<root>
<priority value ="DEBUG" />
<appender-ref ref="FILE" />
</root>
</log4j:configuration>
答案 1 :(得分:0)
将根类别设置为INFO
,将类的相应记录器(例如org.myemployer.myapp
)设置为DEBUG
答案 2 :(得分:-1)
使用此功能,您可以设置日志级别:
import org.apache.log4j.Level;
public static Logger logger = null;
logger.setLevel(Level.DEBUG);
和
Logger.getRootLogger().setLevel(Level.INFO);