我有两个类GetStatus和Logg。
GetStatus从xml文件中读取并选取两个元素并检查其值是对还是错。我们尝试捕获GetStatus和一些例外。
} catch (IOException ex) {
logger.log(Level.WARNING, "wrong or interrupted I/O operations.",ex);
}catch (NumberFormatException ex) {
logger.log(Level.WARNING, "Wrong argument format", ex);
} catch (ParserConfigurationException ex) {
logger.log(Level.WARNING, "Indicates a serious configurationerror",ex);
} catch (SAXException ex) {
logger.log(Level.WARNING, "XML Parsing error", ex);
我们希望将异常发送到另一个类,并创建一个文件并记录异常。但是我们想要选择是否必须记录异常,或者只是打印到终端或控制台。我们想用java.util.logging做到这一点。
这是我们的Logg类
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy_MM-dd_HH-mm-ss");
if (saveMethod == 1) {
try {
fh = new FileHandler((dateFormat.format(date) + ".log"), false);
} catch (Exception e) {
logger.log(Level.WARNING, "Wrong in Logg", e);
Logger l = Logger.getLogger("");
fh.setFormatter(new SimpleFormatter());
l.addHandler(fh);
l.setLevel(Level.INFO);
}
}
else{
System.err.println("You have not chosen save method!");
}
return 0;
目前它每次都会创建一个文件。
答案 0 :(得分:0)
每次都可能会创建一个新文件,因为每次都会给它一个不同的文件名(因为它基于当前时间)。
是否有任何理由不能拥有静态“LOGGER”字段,例如......
public class MyClass {
public static final Logger LOGGER = Logger.getLogger(MyClass.class);
...
}
我假设您使用的是Log4J 1.2?如果是这样,您可以配置为使用将每天创建新日志文件的文件追加器。看到这个链接......
http://blog.moes.as/2008/10/example-of-using-dailyrollingfileappend.html
答案 1 :(得分:0)
刚刚解决了我的问题!使用类Properties,并从名为config的属性文件中获取level参数,这样我就可以选择我想要登录文件的级别,或者只是在终端或控制台中打印出来。
该类将从另一个类获取参数。
public class Logg {
private final static Logger logger = Logger.getLogger(Logg.class.getName());
private static FileHandler fh = null;
public static void init(int saveMethod) throws IOException {
String level= "";
Properties prop = new Properties();
InputStream in =
Logg.class.getResourceAsStream("resources\\config");
if (in != null) {
prop.load(in);
} else {
throw new FileNotFoundException("property file '" + in + "' not found in the classpath");
}
level = prop.getProperty("Level");
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH-mm");
if (saveMethod == 1) {
try {
fh = new FileHandler((dateFormat.format(date) + ".log"), false);
} catch (Exception e) {
logger.log(Level.INFO, "problems in logg class", e);
}
Logger l = Logger.getLogger("");
fh.setFormatter(new SimpleFormatter());
l.addHandler(fh);
l.setLevel(Level.parse(level));
System.out.println(level);
} else {
System.err.println("You have not chosen save method!");
}
}
}