我正在使用一个内部使用Apache CXF的SDK。 Apache CXF默认使用
我想将日志级别从
java.util.logging
包进行日志记录。我想将日志级别从
INFO
更改为WARNING
或完全关闭。我能在应用程序的主方法中以编程方式实现吗?java.util.logging
包进行日志记录。INFO
更改为WARNING
或完全关闭。我能在应用程序的主方法中以编程方式实现吗?Logger.setLevel()
到实际使用Logger的时间段内,它可能被垃圾回收(GC)掉。所以记录日志的Logger并不是您设置级别的Logger!尤其是在启动过程中有很多GC的框架中。 String logConfig = ".level=" + java.util.logging.Level.INFO + '\n';
logConfig += "handlers=java.util.logging.ConsoleHandler\n";
// ensure ConsoleHandler does not filter
logConfig += "java.util.logging.ConsoleHandler" + ".level=" + java.util.logging.Level.FINEST + '\n';
//set your custom levels
logConfig += "org.apache.cxf" + ".level=" + java.util.logging.Level.WARNING + "\n";
try {
java.util.logging.LogManager.getLogManager().readConfiguration(new java.io.ByteArrayInputStream(logConfig.getBytes("UTF-8")));
// no need to close ByteArrayInputStream -- it is a no-op
}
catch (IOException ioe) {
System.err.println("cannot fully configure logging");
ioe.printStackTrace();
}
-Djava.util.logging.config.file
,它也会被覆盖。\n
结尾。main()
的第一行。如果不可能,您还需要迭代所有现有的 Loggers 并使用 setLevel()
更新其配置。http://cxf.apache.org/docs/general-cxf-logging.html
如果您使用log4j,这将非常容易。log4j.apache.cxf = WARN
在CXF发行版的/etc
文件夹中,有一个示例Java SE logging.properties
文件可用于配置日志。例如,如果您想将控制台日志级别从WARNING
更改为FINE
,则需要按照以下方式更新此logging.properties
文件中的两个属性:
.level= FINE
java.util.logging.ConsoleHandler.level = FINE
注意:如果您想将FINE
更改为其他级别,只需将FINE
更改为其他级别即可
完成此操作后,您需要将-Djava.util.logging.config.file属性设置为logging.properties
文件的位置。例如,下面的Ant目标已经设置了该属性:
<target name="runClient">
<java classname="client.WSClient" fork="true">
<classpath>
<pathelement location="${build.classes.dir}"/>
<fileset dir="${env.CXF_HOME}/lib">
<include name="*.jar"/>
</fileset>
</classpath>
<jvmarg value="-Djava.util.logging.config.file=/usr/myclientapp/logging.properties"/>
</java>
</target>
另外,对于SOAP客户端,您可以修改位于JDK_HOME/jre/lib
文件夹中的Java全局logging.properties
文件,或者对于托管Servlet的Web服务提供者,将logging.properties
文件放置在WEB-INF/classes
文件夹中(有关更多详细信息,请参见此处。)
To remove cxf logging just comment out or remove code the following code from your cxf configuration xml file.
<cxf:bus> <cxf:features> <cxf:logging></cxf:logging> </cxf:features> </cxf:bus>
要关闭额外的日志记录,请将 org.apache.cxf
的日志级别更改为 ERROR
。在 log4j.properties
中添加以下行:
log4j.logger.org.apache.cxf=ERROR
//equivalent to -Dorg.apache.cxf.Logger=org.apache.cxf.common.logging.Log4jLogger
System.setProperty("org.apache.cxf.Logger","org.apache.cxf.common.logging.Log4jLogger");
//Creates the file appender
FileAppender fa = new FileAppender();
fa.setName("FileLogger");
fa.setFile("mylog.log");
fa.setLayout(new PatternLayout("%d %-5p [%c{1}] %m%n"));
fa.setThreshold(Level.WARN);
fa.setAppend(true);
fa.activateOptions();
//Add the appender to CXF logger
Logger.getLogger("org.apache.cxf").addAppender(fa);