首页 > 编程知识 正文

java如何看日志,java代码日志输出配置

时间:2023-05-05 21:08:28 阅读:20237 作者:3188

Java日志输出问题

使用java.util.logger的时候,我遇到了一个奇怪的问题。 在JavaAPI文档中,

Logger.setLevel (. )

ettheloglevelspecifyingwhichmessagelevelswillbeloggedbythislogger.messagelevelslowerthanthisvaluewillbediscarded.theleveleleleleveloggggger

但是,我的机器运行结果不是这样。 这个方法不起作用。

我的代码如下。

publicclassProgramFlags{

publicstaticvoidmain (字符串[ ] args ) throwsSecurityException,Exception{

logmanagerlm=log manager.getlogmanager (;

LoggerpatentLog,字段日志;

filehandler XML _ handler=new filehandler (' log _ output.XML );

filehandler html _ handler=new filehandler (' log _ output.html );

patent log=logger.getlogger (parent logger );

child log=logger.getlogger (parent logger.child logger );

部件日志. set level (level.info );

childlog.setlevel(level.all );

lm.addlogger(patentlog );

lm.addlogger(childlog );

XML _ handler.set formatter (newxmlformatter ) );

html _ handler.set formatter (newhtml formatter ) );

child log.addhandler (XML _ handler;

patent log.addhandler (html _ handler );

childlog.log(level.fine,' thisisafinelogmessage ';

patentlog.log(level.severe,' thisisaserverlogmessage ';

xml_handler.close (;

html_handler.close (;

}

}

classhtmlformatterextendsjava.util.logging.formatter

{

@Override

公共字符串格式(日志记录记录) {

//todo自动生成方法

返回('

' ((新日期(record.get millis () ) ) ) ).toString ) )。

' record.getMessage (()、()、)。

' record.getLoggerName (() ) () ) ); }

publicstringgethead(Handlerh ) )。

{

return((n

n ' '

'

TimeLogMessagen '; }

publicstringgettail(handlerh ) )。

{

返回('

nn '; }

}

执行结果:

html文件:

timelogmessagetuejun 102133602:39 CST 2014 thisisafinelogmessageparentloggertuejun 10213602:39 CST 2014 thildlogggertuejun 101014

logSYSTEM'logger.dtd '

2014-06-10T21:23:39

1402406619799

0

ParentLogger.ChildLogger

精细的

testChangeVar.ProgramFlags

主要的

1

thisisafinelogmessage

2014-06-10T21:23:39

1402406619818

1

ParentLogger.ChildLogger

七人组

testChangeVar.ProgramFlags

主要的

1

thisisaserverlogmessage

根据APi的解释,html文件属于patentLog,其等级为Level.INFO,大于Level.FINE,应该放弃FINE信息,但为什么日志文件中有该项目,而且输出源为parared

请大家说明。

---------解决办法----------

childlog.setlevel(level.all ); 所以childlog.log(level.fine,' thisisafinelogmessage ); 此语句输出记录。 这与父logger的级别无关。

child log=logger.getlogger (parent logger.child logger ); 因此,chileLog输出的记录源当然是ParentLogger.ChildLogger

---------解决办法----------

因为暂时不知道这一点,所以建议您查找文档以了解parentlogger和childlogger之间的关系。 最彻底的是看logger的源代码、开源,并不太难。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。