001package ch.qos.logback.classic.issue.logback1159; 002 003import java.io.File; 004import java.io.IOException; 005import java.nio.file.Files; 006import java.nio.file.Path; 007import java.nio.file.Paths; 008import java.nio.file.attribute.PosixFilePermission; 009import java.util.Collections; 010import java.util.Set; 011 012//import org.apache.commons.io.FileUtils; 013//import org.apache.commons.lang3.RandomStringUtils; 014import org.junit.After; 015import org.junit.Test; 016import org.slf4j.Logger; 017import org.slf4j.LoggerFactory; 018import org.slf4j.LoggerFactoryFriend; 019 020import ch.qos.logback.classic.LoggerContext; 021import ch.qos.logback.classic.joran.JoranConfigurator; 022import ch.qos.logback.core.joran.spi.JoranException; 023 024public class LogbackListenerTest { 025 private File logFile = new File("target/test.log"); 026 027 private void doConfigure() throws JoranException { 028 LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory(); 029 JoranConfigurator configurator = new JoranConfigurator(); 030 configurator.setContext(context); 031 configurator.doConfigure(new File("src/test/input/issue/logback-1159.xml")); 032 } 033 034 @After 035 public void after() { 036 logFile.delete(); 037 LoggerFactoryFriend.reset(); 038 } 039 040 private void disableLogFileAccess() throws IOException { 041 logFile.createNewFile(); 042 logFile.deleteOnExit(); 043 Path path = Paths.get(logFile.toURI()); 044 Set<PosixFilePermission> permissions = Collections.emptySet(); 045 try { 046 Files.setPosixFilePermissions(path, permissions); 047 } catch (UnsupportedOperationException e) { 048 path.toFile().setReadOnly(); 049 } 050 } 051 052 @Test(expected = LoggingError.class) 053 public void testThatErrorIsDetectedAtLogInit() throws Exception { 054 disableLogFileAccess(); 055 doConfigure(); 056 } 057 058 @Test 059 public void assertThatNonFailSafeAppendersNotAffected() throws JoranException { 060 doConfigure(); 061 Logger logger = LoggerFactory.getLogger("NOTJOURNAL"); 062 logger.error("This should not fail"); 063 } 064 065}