我正在尝试在log.properties启动应用程序时加载自定义文件.
我的属性文件与我的主类在同一个包中,所以我假设-Djava.util.logging.config.file=log.properties命令行参数应该加载属性文件.
但是只有在指定属性文件的完整绝对路径时才会加载属性.有关如何使用相对路径的任何建议?
我无法找到我的日志文件.
我正在使用Java Logging - java.util.logging在Windows XP上的Eclipse 3.7.1中.我logging.properties文件的相关行是:
handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler
.level=INFO
java.util.logging.FileHandler.pattern = %h/java%u.log
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
Run Code Online (Sandbox Code Playgroud)
据我所知,在执行这两行之后:
Logger logger = Logger.getLogger("test");
logger.logp(Level.INFO, "myClass", "myMethod", "Alcatraz");
Run Code Online (Sandbox Code Playgroud)
我的日志文件应该在C:\Documents and Settings\[My Windows ID]\javaX.log哪里X是一个整数.
我有5个不同的java.log文件,在该目录中,java0.log通过java4.log,但其中没有包含我的日志记录,甚至记录今天的上日期.我做了一些谷歌搜索,发现跟踪和记录,这意味着我的日志应该在不同的位置,c:\Documents and Settings\[My Windows ID]\Application Data\Sun\Java\Deployment\log.那里有一个名为的文件plugin5581819941091650582.log,但它基本上是空的:
<?xml version="1.0" encoding="windows-1252" standalone="no"?>
<!DOCTYPE log SYSTEM "logger.dtd">
<log>
</log>
Run Code Online (Sandbox Code Playgroud)
它的创建日期是上周.(我不确定是什么过程创建它;我当然没有明确创建它.)
那么我的日志文件在哪里呢?我无法想到其他任何地方.
此外,是否有人知道更改何时logging.properties生效?如果我更改了日志级别或者FileHandler.pattern,在我的程序看到更改之前会发生什么?仅仅保存更改logging.properties …
如何将java.util.logging中的日志记录级别映射到SLF4J?
SLF4J
java.util.logging中
我正在使用Java的Logger课程.我想通过ex.printStackTrace()进入Logger.log(loglevel, String),但printStackTrace()回报率void.所以我无法传递和打印异常的堆栈跟踪.
有什么方法可以转换void成String,或者是否有任何其他方法来打印整个堆栈的异常跟踪?
我想简单地使用java.util.Logging登录控制台:
Logger log = Logger.getLogger("my.logger");
log.setLevel(Level.ALL);
ConsoleHandler handler = new ConsoleHandler();
handler.setFormatter(new SimpleFormatter());
log.addHandler(handler);
log.fine("hello world");
Run Code Online (Sandbox Code Playgroud)
但这没有打印出来.我错过了什么?
谢谢
默认情况下,slf4j与jdk(slf4j-jdk14-1.6.1.jar)一起使用时,不会记录调试消息.我该如何启用它们?
我无法在官方文档,网络或此处找到有关如何启用它的信息.
我发现了一些信息(虽然失败了)在%JDK_HOME%/ lib中创建一个文件,并在配置文件中定义了那里的级别.但是,我想在编译/运行时定义级别,以便我可以从具有不同日志记录级别的IDE运行和调试我的应用程序.
是不是我可以设置一些环境变量,或VM arg?
现在我java.util.logging用来记录我的Java项目中每个方法的入口和出口点.这在调试时非常有用.
我在每个方法的开头都有这段代码,最后是类似的代码:
if (logger.isLoggable(Level.FINER)) {
logger.entering(this.getClass().getName(), "methodName");
}
Run Code Online (Sandbox Code Playgroud)
其中"methodName"是方法的名称(硬编码).
所以我想知道是否有办法自动执行此操作,而无需在每个方法中包含此代码.
我有一个简单的控制台应用程序,它使用apache的PDFBox库,后者又使用commons日志记录.我在我的控制台中收到了很多垃圾邮件,我想抑制它:
2011年2月15日下午3:56:40 org.apache.pdfbox.util.PDFStreamEngine processOperator信息:不支持/禁用操作:EI
在我的代码中,我试图重置日志级别无济于事:
Logger.getLogger("org.apache.pdfbox.util.PDFStreamEngine").setLevel(Level.OFF);
Logger.getLogger("org.apache.pdfbox.util").setLevel(Level.OFF);
Logger.getLogger("org.apache.pdfbox").setLevel(Level.OFF);
Run Code Online (Sandbox Code Playgroud)
尽管有这些设置,但消息仍然显示在控制台上.从Commons日志记录中检索日志对象也没有帮助,因为它似乎没有办法设置级别.
有没有办法以编程方式抑制这些消息?或者我是否需要添加配置文件?
我正在尝试在java.util.logging中使用默认记录器时抑制日期行durinng日志记录的输出.例如,这是一个典型的输出:
Jun 1, 2010 10:18:12 AM gamma.utility.application info
INFO: ping: db-time=2010-06-01 10:18:12.0, local-time=20100601t101812, duration=180000
Jun 1, 2010 10:21:12 AM gamma.utility.application info
INFO: ping: db-time=2010-06-01 10:21:12.0, local-time=20100601t102112, duration=180000
我想摆脱Jun 1, 2010...线条,它们只是混乱了我的日志输出.我怎样才能做到这一点?
我目前正在开发一个程序,其中,我必须将所有输出写入日志文件.
我需要编写一个log方法,它应该给出一个带有级别,消息,对象值,另一个消息,整数值,另一个消息和另一个整数值的输出,其顺序与我指定的顺序相同.我似乎无法找到执行此操作的日志方法.我在用Java.util.logging.这可能吗?