我正在尝试在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();
}
}
我是否需要初始化记录器并在每个类中添加处理程序,如上面的代码?还有其他技巧吗?
答案 0 :(得分:3)
我考虑使用Log4J等日志框架。
使用它只会归结为在中心文件(.xml或.properties)中配置appender(例如FileAppender)和日志级别,以及需要定义你刚刚执行的记录器的每个类{{1} }(其中clazz是您为其定义记录器的类)。
您可以将记录器公共静态并从其他类中使用它,但我不推荐它,因为您通常想知道哪个记录器(即为该记录器定义的类)生成了一个日志条目。 / p>
答案 1 :(得分:3)
您可以使用 logging.properties 文件为整个应用程序全局定义处理程序。在此文件中,您可以微调您的日志记录需求。
查看here或仅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应用程序设置不同的日志记录行为。
答案 2 :(得分:3)
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