Reputation: 81
I want to create and store log files in a particular folder in every hour. How to approach? Any example will be helpful.
Upvotes: 0
Views: 3139
Reputation: 136042
You can create a custom FileAppender, somthing like
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);
}
}
}
use it it log4j config
log4j.appender.file = test.TestFileAppender
log4j.appender.file.file = xxx/%s/1.log
log4j.appender.file.layout = org.apache.log4j.SimpleLayout
and run a FolderNameChanger once an hour
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();
}
}
}
}
this task finds all TestFileAppenders and changes their paths
Upvotes: 0
Reputation: 41210
No extra effort required. Use DailyRollingFileAppender
where set Datepattern
- '.'yyyy-MM-dd-HH
- Rollover at the top of every hour.
Example -
log4j.appender.LOGFILE = org.apache.log4j.DailyRollingFileAppender
log4j.appender.LOGFILE.DatePattern = '.'yyyy-MM-dd-HH
...
Reference - DailyRollingFileAppender
Note : Do not use the colon ":" character in anywhere in the DatePattern option. The text before the colon is interpeted as the protocol specificaion of a URL which is probably not what you want.
Upvotes: 3
Reputation: 12797
Something like that :
public void run(){
while(true){
synchronize(this){
if(timeLap==1hr)
file.writeLine();
}
else
Thread.sleep(1hour);
}
}
or you can use the API http://www.vogella.com/articles/Logging/article.html
Upvotes: 0
Reputation: 152
You can use logger API(log4j) for generating the log files in every hour.
Upvotes: 0