/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements. See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache license, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the license for the specific language governing permissions and
 * limitations under the license.
 */
package org.apache.logging.log4j.core.appender;

import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.core.LifeCycle;
import org.apache.logging.log4j.core.config.ConfigurationFactory;
import org.junit.BeforeClass;
import org.junit.Test;

public class RandomAccessFileAppenderLocationTest {

    @BeforeClass
    public static void beforeClass() {
        System.setProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY,
                "RandomAccessFileAppenderLocationTest.xml");
    }

    @Test
    public void testLocationIncluded() throws Exception {
        final File f = new File("target", "RandomAccessFileAppenderLocationTest.log");
        // System.out.println(f.getAbsolutePath());
        f.delete();
        final Logger log = LogManager.getLogger("com.foo.Bar");
        final String msg = "Message with location, flushed with immediate flush=false";
        log.info(msg);
        ((LifeCycle) LogManager.getContext()).stop(); // stop async thread

        final BufferedReader reader = new BufferedReader(new FileReader(f));
        final String line1 = reader.readLine();
        reader.close();
        f.delete();
        assertNotNull("line1", line1);
        assertTrue("line1 correct", line1.contains(msg));

        final String location = "testLocationIncluded";
        assertTrue("has location", line1.contains(location));
    }
}

@@ -1048,20 +1048,16 @@
 og4j.Log
-Mana
 ger;%0Aimp
@@ -1089,62 +1089,24 @@
 g4j.
-Logger;%0Aimport org.apache.logging.log4j.core.LifeCyc
+junit.CleanFi
 le
+s
 ;%0Aim
@@ -1139,40 +1139,34 @@
 g4j.
-core.config.ConfigurationFactory
+junit.InitialLoggerContext
 ;%0Aim
@@ -1180,27 +1180,20 @@
 g.junit.
-BeforeClass
+Rule
 ;%0Aimport
@@ -1271,152 +1271,55 @@
     
-@BeforeClass%0A    public static void beforeClass() %7B%0A        System.setProperty(ConfigurationFactory.CONFIGURATION_FILE_PROPERTY,%0A               
+private final File logFile = new File(%22target%22,
  %22Ra
@@ -1357,31 +1357,25 @@
 est.
-xml
+log
 %22);
-%0A    %7D
 %0A%0A    @
-Test
+Rule
 %0A   
@@ -1386,97 +1386,61 @@
 lic 
-void testLocationIncluded() throws Exception %7B%0A        final File f = new File(%22target%22, 
+InitialLoggerContext init = new InitialLoggerContext(
 %22Ran
@@ -1477,86 +1477,149 @@
 est.
-log
+xml
 %22);%0A
+%0A
     
-    // System.out.println(f.getAbsolutePath()
+@Rule%0A    public CleanFiles files = new CleanFiles(logFile
 );%0A
+%0A
     
-    f.delete();
+@Test%0A    public void testLocationIncluded() throws Exception %7B
 %0A   
@@ -1642,26 +1642,20 @@
 r log = 
-LogManager
+init
 .getLogg
@@ -1796,31 +1796,12 @@
     
-((LifeCycle) LogManager
+init
 .get
@@ -1809,17 +1809,16 @@
 ontext()
-)
 .stop();
@@ -1840,16 +1840,38 @@
 thread%0A%0A
+        String line1;%0A
         
@@ -1934,17 +1934,23 @@
 eReader(
-f
+logFile
 ));%0A    
@@ -1953,28 +1953,33 @@
         
-final String
+try %7B%0A           
  line1 =
@@ -1994,24 +1994,48 @@
 readLine();%0A
+        %7D finally %7B%0A    
         read
@@ -2058,19 +2058,10 @@
     
-f.delete();
+%7D%0A
 %0A   

Update to use InitialLoggerContext rule.