Ich möchte nur in eine Datei protokollieren und die Protokollierung der Konsole deaktivieren, aber dies funktioniert nicht. Ich denke, das sollte funktionieren, aber das tut es nicht. Weiß jemand wo ich meinen Fehler mache?slf4j/logback - Konsolenprotokollierung deaktivieren
Ich versuche, jede Standard-Logger mit detachAndStopAllAppenders
zu entfernen, aber immer noch, es stoppt nicht an der Konsole anmelden ...
import android.util.Log;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.rolling.RollingFileAppender;
import ch.qos.logback.core.rolling.TimeBasedRollingPolicy;
public class FileLogger
{
static Logger mLogger = LoggerFactory.getLogger(FileLogger.class);
public FileLogger(FileLoggingSetup setup)
{
if (setup == null)
throw new RuntimeException("You can't create a FileLogger without providing a setup!");
init(setup);
}
private void init(FileLoggingSetup setup)
{
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
lc.reset();
// 1) FileLoggingSetup - Encoder for File
PatternLayoutEncoder encoder1 = new PatternLayoutEncoder();
encoder1.setContext(lc);
encoder1.setPattern(setup.mLogPattern);
encoder1.start();
// 2) FileLoggingSetup - rolling file appender
RollingFileAppender<ILoggingEvent> rollingFileAppender = new RollingFileAppender<ILoggingEvent>();
rollingFileAppender.setAppend(true);
rollingFileAppender.setContext(lc);
//rollingFileAppender.setFile(setup.mFolder + "/" + setup.mFileName + "." + setup.mFileExtension);
// 3) FileLoggingSetup - Rolling policy (one log per day)
TimeBasedRollingPolicy<ILoggingEvent> rollingPolicy = new TimeBasedRollingPolicy<ILoggingEvent>();
rollingPolicy.setFileNamePattern(setup.mFolder + "/" + setup.mFileName + "_%d{yyyyMMdd}." + setup.mFileExtension);
rollingPolicy.setMaxHistory(setup.mDaysToKeep);
rollingPolicy.setCleanHistoryOnStart(true);
rollingPolicy.setParent(rollingFileAppender);
rollingPolicy.setContext(lc);
rollingPolicy.start();
rollingFileAppender.setTriggeringPolicy(rollingPolicy);
rollingFileAppender.setEncoder(encoder1);
rollingFileAppender.start();
// add the newly created appenders to the root logger;
// qualify Logger to disambiguate from org.slf4j.Logger
ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) mLogger;
root.detachAndStopAllAppenders();
root.addAppender(rollingFileAppender);
}
}
gradle Abhängigkeiten
compile 'org.slf4j:slf4j-api:1.7.21'
compile 'com.github.tony19:logback-android-core:1.1.1-6'
compile ('com.github.tony19:logback-android-classic:1.1.1-6') {
exclude group: 'com.google.android', module: 'android'
}
Ich bin Protokollierung über mLogger.debug(logMessage);
und ähnliche danach ...
Bitte aktualisieren Sie Ihre Frage, um Ihre grdle Abhängigkeiten für 'slf4j' und' Logback-android' zu zeigen . – tony19
erledigt. Meine Importe und meine Abhängigkeiten hinzugefügt – prom85
'logback-android' hat standardmäßig keine Logger, so dass etwas in Ihrer App (oder Umgebung) den Konsolenappender aktiviert. Haben Sie eine 'logback.xml' in' assets/'? Ist eine Ihrer Abhängigkeiten 'logback-android'? – tony19