View | Details | Raw Unified | Return to bug 53536
Collapse All | Expand All

(-)apache/log4j/rolling/RollingFileAppender.java (-3 / +36 lines)
Lines 30-35 Link Here
30
import org.w3c.dom.Element;
30
import org.w3c.dom.Element;
31
31
32
import java.io.File;
32
import java.io.File;
33
import java.io.FileNotFoundException;
33
import java.io.FileOutputStream;
34
import java.io.FileOutputStream;
34
import java.io.IOException;
35
import java.io.IOException;
35
import java.io.OutputStream;
36
import java.io.OutputStream;
Lines 284-292 Link Here
284
              }
285
              }
285
            } else {
286
            } else {
286
              Writer newWriter =
287
              Writer newWriter =
287
                createWriter(
288
                createWriter(createFileOutputStream(rollover.getActiveFileName(), rollover.getAppend()));
288
                  new FileOutputStream(
289
                    rollover.getActiveFileName(), rollover.getAppend()));
290
              closeWriter();
289
              closeWriter();
291
              setFile(rollover.getActiveFileName());
290
              setFile(rollover.getActiveFileName());
292
              this.qw = createQuietWriter(newWriter);
291
              this.qw = createQuietWriter(newWriter);
Lines 336-341 Link Here
336
  }
335
  }
337
336
338
  /**
337
  /**
338
   * Creates a new FileOutputStream of a new log file, possibly creating first all the needed parent directories
339
   * 
340
   * @param newFileName Filename of new log file to be created 
341
   * @param append If file should be appended
342
   * @return newly created FileOutputStream
343
   * @throws FileNotFoundException if creating log file or parent directories was unsuccessful
344
   */
345
  private FileOutputStream createFileOutputStream(String newFileName, boolean append) throws FileNotFoundException {
346
	    try {
347
	          //
348
	          //   attempt to create file
349
	          //
350
	          return new FileOutputStream(newFileName, append);
351
	    } catch(FileNotFoundException ex) {
352
	          //
353
	          //   if parent directory does not exist then
354
	          //      attempt to create it and try to create file
355
	          //      see bug 9150
356
	          //
357
	          String parentName = new File(newFileName).getParent();
358
	          if (parentName != null) {
359
	             File parentDir = new File(parentName);
360
	             if(!parentDir.exists() && parentDir.mkdirs()) {
361
	                return new FileOutputStream(newFileName, append);
362
	             } else {
363
	                throw ex;
364
	             }
365
	          } else {
366
	             throw ex;
367
	          }
368
	    }
369
  }
370
371
  /**
339
   * {@inheritDoc}
372
   * {@inheritDoc}
340
  */
373
  */
341
  protected void subAppend(final LoggingEvent event) {
374
  protected void subAppend(final LoggingEvent event) {

Return to bug 53536