状态的JavaDocsjava.util.logging.Level
:
降序的级别是:
SEVERE
(最高价值)WARNING
INFO
CONFIG
FINE
FINER
FINEST
(最低价值) import java.util.logging.*;
class LoggingLevelsBlunder {
public static void main(String[] args) {
Logger logger = Logger.getAnonymousLogger();
logger.setLevel(Level.FINER);
System.out.println("Logging level is: " + logger.getLevel());
for (int ii=0; ii<3; ii++) {
logger.log(Level.FINE, ii + " " + (ii*ii));
logger.log(Level.INFO, ii + " " + (ii*ii));
}
}
}
Run Code Online (Sandbox Code Playgroud)
Logging level is: FINER
Jun 11, 2011 9:39:23 PM LoggingLevelsBlunder main
INFO: 0 0
Jun 11, 2011 9:39:24 PM …
Run Code Online (Sandbox Code Playgroud) 在普通的Java SE 6环境中:
Logger l = Logger.getLogger("nameless");
l.setLevel(Level.ALL);
l.fine("somemessage");
Run Code Online (Sandbox Code Playgroud)
Eclipse控制台中没有显示任何内容.l.info("")及以上版本工作正常,但任何低于罚款的东西似乎都不起作用.什么可能是错的?TIA.
最近我的jenkins.log开始变得非常庞大,非常快,充满了关于DNS解析的例外.我试图使用logrotate,但是日志文件增长太快甚至不能旋转,只是占用了我所有的磁盘空间,这会导致各种服务失败,因为它们不能再写文件了.
我该如何避免?
我有以下问题:我想使用java.util.logging.Logger
.没有我发现不同的资源,1,2,3,如何能够修改记录的行为.
特别是在2 a(在我看来)的问题中,给出了根据类名初始化记录器的良好结构.如果需要,这还允许在基于包的级别上修改详细程度以进行调试.
经过一番深入研究后发现,全局记录器和"空"记录器(带名称""
)不一样.另请参见下面的示例.我刚刚创建了一个记录器foo.Bar
,它锚定在空记录器而不是被调用的记录器上foo
.只有在我第一次创建记录器时bar
,记录器bar.Baz
才会正确锚定.
这使得这个问题中的方法主要无用,因为我们不能假设之前创建的父记录器.根据需要,我必须根据需要解析类名并创建记录器.
我是否正确我必须添加一些static {...}
代码以递归方式初始化记录器,然后才能初始化自己的记录器?如果多个类调用Logger.getLogger(String)
包记录器的方法(导致总体上多次调用,例如两者bar.Baz
并bar.FooBaz
获取记录器bar
),这会产生任何负面影响吗?
import java.util.Enumeration;
import java.util.logging.LogManager;
import java.util.logging.Logger;
public class TestLogger
{
public static void main(String[] args)
{
// Create the logger directly
Logger.getLogger("foo.Bar");
// Create the logger objects step-by-step
Logger.getLogger("bar");
Logger.getLogger("bar.Baz");
// Put the available loggers to output
Enumeration<String> e = LogManager.getLogManager().getLoggerNames();
while(e.hasMoreElements()) …
Run Code Online (Sandbox Code Playgroud)