internalized logback config, added -Dcryptomator.logDir=path/relative/to/home. external logback configuration can still be used via -Dlogback.configurationFile=/path/to/logback.xml

This commit is contained in:
Sebastian Stenzel
2019-02-21 11:39:56 +01:00
parent debcab47e2
commit b9a120b51b
6 changed files with 100 additions and 2 deletions
@@ -9,6 +9,7 @@ import javax.inject.Inject;
import javax.inject.Singleton;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Optional;
import java.util.Spliterator;
import java.util.Spliterators;
import java.util.function.Predicate;
@@ -29,6 +30,7 @@ public class Environment {
LOG.debug("cryptomator.settingsPath: {}", System.getProperty("cryptomator.settingsPath"));
LOG.debug("cryptomator.ipcPortPath: {}", System.getProperty("cryptomator.ipcPortPath"));
LOG.debug("cryptomator.keychainPath: {}", System.getProperty("cryptomator.keychainPath"));
LOG.debug("cryptomator.logDir: {}", System.getProperty("cryptomator.logDir"));
}
public Stream<Path> getSettingsPath() {
@@ -43,6 +45,19 @@ public class Environment {
return getPaths("cryptomator.keychainPath");
}
public Optional<Path> getLogDir() {
return getPath("cryptomator.logDir") //
.filter(Predicate.not(Path::isAbsolute)) // property must be a relative path
.map(ABSOLUTE_HOME_DIR::resolve); // resolve relative path against HOME
}
private Optional<Path> getPath(String propertyName) {
String value = System.getProperty(propertyName);
return Optional.ofNullable(value).map(Paths::get);
}
// visible for testing
Stream<Path> getPaths(String propertyName) {
Stream<String> rawSettingsPaths = getRawList(propertyName, PATH_LIST_SEP);
@@ -2,6 +2,7 @@ package org.cryptomator.common;
import org.hamcrest.MatcherAssert;
import org.hamcrest.Matchers;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
@@ -11,6 +12,7 @@ import org.junit.jupiter.api.Test;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
@DisplayName("Environment Variables Test")
@@ -60,6 +62,27 @@ class EnvironmentTest {
MatcherAssert.assertThat(result, Matchers.contains(Paths.get("/home/testuser/AppData/Roaming/Cryptomator/keychain.json")));
}
@Test
@DisplayName("cryptomator.logDir=/foo/bar")
public void testAbsoluteLogDir() {
System.setProperty("cryptomator.logDir", "/foo/bar");
Optional<Path> logDir = env.getLogDir();
Assertions.assertFalse(logDir.isPresent());
}
@Test
@DisplayName("cryptomator.logDir=foo/bar")
public void testRelativeLogDir() {
System.setProperty("cryptomator.logDir", "foo/bar");
Optional<Path> logDir = env.getLogDir();
Assertions.assertTrue(logDir.isPresent());
Assertions.assertEquals(Paths.get("/home/testuser/foo/bar"), logDir.get());
}
@Nested
@DisplayName("Path Lists")
class SettingsPath {