我有一个需要一些日志记录功能的swing应用程序。我想将所有全局问题记录到系统某处的日志文件中。
我开始在我的main
中设置我的记录器:
// Setup global logging.
Logger.getLogger("").addHandler(new FileHandler("%t/log.txt"));
我知道%t
表示临时目录,但是当我在Netbeans工作时,这个目录位于Windows机器上的哪个位置?独立运行时(例如Netbeans之外)文件位于何处?有没有更好的选择,例如将文件放在My Documents
或类似的东西?是在temp
目录标准实践中创建日志文件吗?
另外,是保留记录器的名称""
全局记录器的常用做法,还是应该使用最常用的包(例如com.some.package
)?
现在,当我去实际记录文件时,我可以简单地进行以下调用,对吗?
Logger.getLogger("").log(Level.SEVERE, msg, ex);
非常感谢任何有关最佳做法的建议。
答案 0 :(得分:0)
要获取临时文件夹位置,您可以执行以下操作:
System.out.println(System.getProperty("java.io.tmpdir"));
此外,由于logback,slf4j和log4j等其他日志记录机制的许多原因,使用java util logger进行日志记录的情况较差,因此我建议您开始使用其中一个记录器。
答案 1 :(得分:0)
您应该创建记录器并在单例类中添加处理程序。来自java doc:
可以通过调用其中一个getLogger工厂方法获取Logger对象。这些将创建一个新的Logger或返回一个合适的现有Logger。重要的是要注意,如果没有保留对Logger的强引用,则可以随时对其中一个getLogger工厂方法返回的Logger进行垃圾收集。
这意味着记录器可能被垃圾收集,您的文件处理程序将丢失。
至于文件位置,为什么不在jar所在的文件夹下创建一个日志目录?