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

如何在web应用程序中使用java.util.logger?,java,jakarta-ee,java.util.logging,Java,Jakarta Ee,Java.util.logging,我正在尝试跨web应用程序使用记录器。我已经添加了FileHandler来将日志写入文件。现在,我需要在项目中的其他类/servlet中使用相同的处理程序,以便将所有类的日志写入相同的文本文件。 我怎样才能做到这一点 /*** * Initialize a logger */ public static Logger logger; static { try { FileHandler fh = new FileHandler("log.txt", true);

我正在尝试跨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.</P> 使用它可以归结为在一个中心文件(.xml或.properties)中配置appender(例如FileAppender)和日志级别,在每个需要定义记录器的类中只需执行
log l=LogFactory.getLog(clazz)(其中clazz是为其定义记录器的类)

您可以将logger设置为公共静态,并从其他类中使用它,但我不建议这样做,因为您通常希望知道哪个logger(即,为哪个类定义了logger)生成了日志条目。

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

查找或仅查找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/类中,您甚至可以为每个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.属性

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

您希望记录什么类型的数据?异常或一些调试信息或smth其他?嗨,我主要想记录调试信息。