我使用java.util.logging
,并将日志放在应用程序托管bean中,因为我认为整个应用程序应该只有一个记录器。
@ManagedBean(name="logging")
@ApplicationScoped
public class Logging {
private static Logger logger = Logger.getLogger(Logger.class.getName());
private static FileHandler fh = null;
public Logging() {
try{
fh = new FileHandler("DMBackingBean");
}catch(IOException ignore){}
logger.addHandler(fh);
logger.setLevel(Level.ALL);
}
public Logger getLogger(){
return logger;
}
}
这是我遇到的奇怪行为。当我第一次运行程序时,我在AAA
内记录DMBackingBean
。然后我重新部署应用程序(新会话),现在我看到另一个日志文件已创建,DMBackingBean.1
内容为AAA
。现在包含DMBackingBean
AAA
AAA
两个问题:将日志记录放在应用程序作用域bean中是否标准?有没有办法让所有日志都附加到一个文件中,而不是每次重新部署(新会话)时都会创建一个新的日志文件?
答案 0 :(得分:2)
将日志记录放在应用程序作用域bean中是否标准?
IMO,更典型的是创建记录器层次结构,以便您可以以细粒度的方式激活和控制记录(例如,配置com.acme.Foo
以记录ERROR级别,同时配置{{1}的记录在DEBUG级别。)
有没有办法让所有日志都附加到一个文件中,而不是每次重新部署(新会话)时都会创建一个新的日志文件?
看起来你需要创建一个追加文件处理程序:
com.acme.bar.BAR
答案 1 :(得分:0)
取消部署bean时,需要撤消日志记录。否则,每次重新部署时都会添加一个新的。