如何在Web应用程序中使用java.util.logger?

我正在尝试在Web应用程序中使用记录器。 我已经添加了FileHandler来将日志写入文件。 现在,我需要在项目中的其他类/ servlet中使用相同的处理程序,以便将来自所有类的日志写入同一文本文件。 我怎样才能做到这一点?

/*** * Initialize a logger */ public static Logger logger; static { try { FileHandler fh = new FileHandler("log.txt", true); fh.setFormatter(new SimpleFormatter()); logger = Logger.getLogger(MyClass.class.getName()); logger.addHandler(fh); } catch (IOException e) { e.printStackTrace(); } } 

我是否需要初始化记录器并在每个类中添加处理程序,如上面的代码? 还有其他技巧吗?

我考虑使用Log4J等日志框架。

使用它只会归结为配置appender(例如FileAppender)和日志级别在中心文件(.xml或.properties)和每个需要定义记录器的类中,你只需要执行Log l = LogFactory.getLog(clazz); (clazz是您为其定义记录器的类)。

您可以使记录器公共静态并从其他类中使用它,但我不推荐它,因为您通常想知道哪个记录器(即为该记录器定义的类)生成了一个日志条目。

您可以使用logging.properties文件为整个应用程序全局定义处理程序。 在此文件中,您可以微调您的日志记录需求。

看这里或只是google的logging.properties

上面的链接示例:

 handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler java.util.logging.ConsoleHandler.level = INFO java.util.logging.FileHandler.level = ALL java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter 

您甚至可以通过将logging.properties放在Web应用程序的WEB-INF / classes中来为每个Web应用程序设置不同的日志记录行为。

 package package_name; import java.io.IOException; import java.util.Properties; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; public class Log { public Log() { Properties props = new Properties(); try { props.load(getClass().getResourceAsStream("/log4j.properties")); } catch (IOException e) { e.printStackTrace(); } PropertyConfigurator.configure(props);//PropertyConfigurator.configure("log4j.properties"); } public Logger getLogger(Object obj) { Logger logger = Logger.getLogger(Object.class); return logger; } 

}

然后我们必须在我们的一个软件包中维护一个log4j.properties文件,该文件应如下所示,

log4j.properties

 log4j.rootLogger=DEBUG, R,CA log4j.appender.R = org.apache.log4j.DailyRollingFileAppender log4j.appender.R.File = c:\\our project name+LOGSLIVE\\logs\\project short name.log log4j.appender.R.Append = true log4j.appender.R.DatePattern = '_'yyyy-MM-dd'.log' log4j.appender.R.layout = org.apache.log4j.PatternLayout #log4j.appender.R.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [%t] [%p] %m%n log4j.appender.R.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %5p [%t] (%F:%L) - %m%n #Console Appender log4j.appender.CA=org.apache.log4j.ConsoleAppender log4j.appender.CA.layout=org.apache.log4j.PatternLayout log4j.appender.CA.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n