我想每小时在特定文件夹中创建和存储日志文件。 如何处理? 任何例子都会有所帮助。
答案 0 :(得分:3)
无需额外的努力。使用DailyRollingFileAppender
设置Datepattern
- '.'yyyy-MM-dd-HH
- 每小时顶部的滚动。
示例 -
log4j.appender.LOGFILE = org.apache.log4j.DailyRollingFileAppender
log4j.appender.LOGFILE.DatePattern = '.'yyyy-MM-dd-HH
...
注意:不要在DatePattern选项的任何位置使用冒号“:”字符。冒号之前的文本是作为URL的协议规定而插入的,这可能不是您想要的。
答案 1 :(得分:0)
您可以使用记录器API(log4j)每小时生成一次日志文件。
答案 2 :(得分:0)
类似的东西:
public void run(){
while(true){
synchronize(this){
if(timeLap==1hr)
file.writeLine();
}
else
Thread.sleep(1hour);
}
}
或者您可以使用API http://www.vogella.com/articles/Logging/article.html
答案 3 :(得分:0)
您可以创建自定义FileAppender,类似于
public class TestFileAppender extends WriterAppender {
String pattern;
public void setFile(String file) {
this.pattern = file;
}
public synchronized void update() {
try {
closeWriter();
String folder = new SimpleDateFormat("yyyyMMddHH").format(new Date());
File file = new File(String.format(pattern, folder));
file.getParentFile().mkdirs();
setWriter(new BufferedWriter(new FileWriter(file, true)));
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
使用它log4j config
log4j.appender.file = test.TestFileAppender
log4j.appender.file.file = xxx/%s/1.log
log4j.appender.file.layout = org.apache.log4j.SimpleLayout
每小时运行一次FolderNameChanger
class FolderNameChanger extends TimerTask {
FolderNameChanger() {
run();
}
public void run() {
Enumeration<Appender> e = Logger.getRootLogger().getAllAppenders();
while (e.hasMoreElements()) {
Appender a = e.nextElement();
if (a instanceof TestFileAppender) {
((TestFileAppender) a).update();
}
}
}
}
此任务找到所有TestFileAppenders并更改其路径