使用日志看似简单,其实不然。
我是一个学了Java仅仅一个多月的程序员,以前一直在微软平台上做事情,因工作需要不得不转到Java上,一切都现学现卖。
现在到了写日志的阶段,开始使用java.util.logging.logger觉得不错,搞熟悉后又听说log4j不错,又把log4j熟悉了起来,感觉确实不错。
可是在编写Java RMI应用时Log4j遇到了致命的问题就是不能串行化(Serialized),又不得又回到了java.util.logging.logger上来,在使用Log4j时觉得能按日期格式DailyRolling...保存日志文件很实用,因为长期不间断使用一个文件记录日志会产生很大的文件很不方便,那么java.util.logging.logger能不能也这样做,在网上找了一堆解决办法,结果都是云里来雾里去不得要领,后来发现问题的解决竟然是那么简单,概念就不赘述了,直接上代码。
package madaming.logs.java.util.logging.logger;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.*;
/**
* Created by madaming on 2014/10/27.
*/
public class LogTest {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm");
String trace = sdf.format(new Date().getTime());
final Logger logger = Logger.getLogger("madaming.logs.java.util.logging.logger");
logger.setLevel(Level.INFO);
FileHandler fileHandler = null;
try {
fileHandler = new FileHandler("java_"+trace+".log",true ); // 只用一个文件记录日志
// 用10个文件记录日志,每个文件10240个字节,10个文件循环使用并覆盖,只保留最后10个文件的内容
// fileHandler = new FileHandler("java_"+trace+"_%g.log", 1024*1024, 30);
} catch (IOException e) {
e.printStackTrace();
}
fileHandler.setFormatter(new Formatter() {
@Override
public String format(LogRecord arg0) {
SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");//设置日期格式
return df.format(new Date()) + "\t" + arg0.getLoggerName() + "\t" + arg0.getLevel().getName() + "\t" + arg0.getMessage() + "\n\r\n";
}
});
// java.util.logging.Formatter s = new java.util.logging.SimpleFormatter();
// fileHandler.setFormatter(s);
fileHandler.setLevel(Level.INFO);
logger.addHandler(fileHandler);
logger.info("********");
for (int i = 0; i < 10; i++) {
logger.info(String.format("%04d", i) + " Begin Crawling, Good Luck!");
trace = sdf.format(new Date().getTime());
String filePatten="LogTest" + trace + ".log";
File file = new File(filePatten);
if (!file.exists()) {
logger.removeHandler(fileHandler);
fileHandler = new FileHandler(filePatten, true); // 只用一个文件记录日志
logger.addHandler(fileHandler);
}
}
}
}
运行结果:
产生的日志文件是
java_2014-11-01-22-02.log
java_2014-11-01-22-03.log
java_2014-11-01-22-04.log
java_2014-11-01-22-05.log
其中最后一个日志文件的内容是
014年11月01日 22:05:12 madaming.logs.java.util.logging.logger INFO ********
2014年11月01日 22:05:12 madaming.logs.java.util.logging.logger INFO 0000 Begin Crawling, Good Luck!
2014年11月01日 22:05:12 madaming.logs.java.util.logging.logger INFO 0001 Begin Crawling, Good Luck!
2014年11月01日 22:05:12 madaming.logs.java.util.logging.logger INFO 0002 Begin Crawling, Good Luck!
2014年11月01日 22:05:12 madaming.logs.java.util.logging.logger INFO 0003 Begin Crawling, Good Luck!
2014年11月01日 22:05:12 madaming.logs.java.util.logging.logger INFO 0004 Begin Crawling, Good Luck!
2014年11月01日 22:05:12 madaming.logs.java.util.logging.logger INFO 0005 Begin Crawling, Good Luck!
2014年11月01日 22:05:12 madaming.logs.java.util.logging.logger INFO 0006 Begin Crawling, Good Luck!
2014年11月01日 22:05:12 madaming.logs.java.util.logging.logger INFO 0007 Begin Crawling, Good Luck!
2014年11月01日 22:05:12 madaming.logs.java.util.logging.logger INFO 0008 Begin Crawling, Good Luck!
2014年11月01日 22:05:12 madaming.logs.java.util.logging.logger INFO 0009 Begin Crawling, Good Luck!
2014年11月01日 22:05:29 madaming.logs.java.util.logging.logger INFO ********
2014年11月01日 22:05:29 madaming.logs.java.util.logging.logger INFO 0000 Begin Crawling, Good Luck!
2014年11月01日 22:05:29 madaming.logs.java.util.logging.logger INFO 0001 Begin Crawling, Good Luck!
2014年11月01日 22:05:29 madaming.logs.java.util.logging.logger INFO 0002 Begin Crawling, Good Luck!
2014年11月01日 22:05:29 madaming.logs.java.util.logging.logger INFO 0003 Begin Crawling, Good Luck!
2014年11月01日 22:05:29 madaming.logs.java.util.logging.logger INFO 0004 Begin Crawling, Good Luck!
2014年11月01日 22:05:29 madaming.logs.java.util.logging.logger INFO 0005 Begin Crawling, Good Luck!
2014年11月01日 22:05:29 madaming.logs.java.util.logging.logger INFO 0006 Begin Crawling, Good Luck!
2014年11月01日 22:05:29 madaming.logs.java.util.logging.logger INFO 0007 Begin Crawling, Good Luck!
2014年11月01日 22:05:29 madaming.logs.java.util.logging.logger INFO 0008 Begin Crawling, Good Luck!
2014年11月01日 22:05:29 madaming.logs.java.util.logging.logger INFO 0009 Begin Crawling, Good Luck!
2014年11月01日 22:05:33 madaming.logs.java.util.logging.logger INFO ********
2014年11月01日 22:05:33 madaming.logs.java.util.logging.logger INFO 0000 Begin Crawling, Good Luck!
2014年11月01日 22:05:33 madaming.logs.java.util.logging.logger INFO 0001 Begin Crawling, Good Luck!
2014年11月01日 22:05:33 madaming.logs.java.util.logging.logger INFO 0002 Begin Crawling, Good Luck!
2014年11月01日 22:05:33 madaming.logs.java.util.logging.logger INFO 0003 Begin Crawling, Good Luck!
2014年11月01日 22:05:33 madaming.logs.java.util.logging.logger INFO 0004 Begin Crawling, Good Luck!
2014年11月01日 22:05:33 madaming.logs.java.util.logging.logger INFO 0005 Begin Crawling, Good Luck!
2014年11月01日 22:05:33 madaming.logs.java.util.logging.logger INFO 0006 Begin Crawling, Good Luck!
2014年11月01日 22:05:33 madaming.logs.java.util.logging.logger INFO 0007 Begin Crawling, Good Luck!
2014年11月01日 22:05:33 madaming.logs.java.util.logging.logger INFO 0008 Begin Crawling, Good Luck!
2014年11月01日 22:05:33 madaming.logs.java.util.logging.logger INFO 0009 Begin Crawling, Good Luck!