0
ファイルにのみログオンし、コンソールログを無効にしたいが、これは動作しない。私は次のことがうまくいくはずだと思いますが、そうはしません。誰が私のミスをどこに知っていますか?私はdetachAndStopAllAppenders
で任意のデフォルトのロガーを削除するには、まだ、それはコンソールへのロギングを停止しないしようとしているslf4j/logback - コンソールログを無効にする
...
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の依存関係
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'
}
私はmLogger.debug(logMessage);
以降のログ記録...
'slf4j'と' logback-android' 。 – tony19
が完了しました。 – prom85
'logback-android'にはデフォルトでロガーがありません。そのため、あなたのアプリケーション(または環境)内の何かがコンソールアペンダーを有効にしています。 'assets /'に 'logback.xml'がありますか? 'logback-android'を使ってあなたの依存関係の1つですか? – tony19