slf4j / logback-禁用控制台日志记录

舞会85

我只想登录到文件并禁用控制台日志记录,但这不起作用。我认为遵循以下方法应该可以,但是不能。有人知道我在哪里犯错吗?

我正在尝试使用删除任何默认记录器,detachAndStopAllAppenders但仍然不会停止记录到控制台...

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);之后通过和类似的方式登录...

舞会85

问题是,我正在另一个库中注册另一个记录器,并且log4j已经全局设置,所以我的小日志类正在记录到在其他地方注册的那个记录器...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使slf4j / logback在控制台上打印?

没有jcl-over-slf4j的Spring + Logback(slf4j)日志记录

使用SLF4j + log4j代替SLF4J + logback进行Jclouds日志记录

slf4j logback日志滚动创建.tmp文件

Slf4j或Logback:关闭1个单元测试(或1个线程)的日志记录

使用slf4j / logback记录docx4j 3.0

使用 SLF4J 和 Logback 创建日志文件的问题

为什么Slf4j / Logback日志文件名和行号不

如何使用Slf4j的Logback实现使用Spring记录肥皂客户端消息

slf4j未能绑定记录器,尽管在类路径上存在logback

使用logback和slf4j记录休眠参数值

SLF4J和Logback:将记录器传播到自动连接的服务

从Hibernate 4.3记录查询(使用SLF4J + Logback或P6SPY)

通过SLF4J进行本机Logback VS Logback

带有 Logback 的 SLF4J:NoClassDefFoundError:org/slf4j/impl/StaticLoggerBinder

禁用log4j控制台日志记录并启用文件日志记录

Websphere多个slf4j logback绑定可以解决

SLF4J + Logback未登录WildFly

在SLF4J / Logback中使用标记的最佳实践

SLF4J和Logback的依赖性管理

SLF4J记录器不打印任何内容到控制台

Java:如何将原始JSON记录为JSON并避免在使用logback / slf4j进行记录期间进行转义

拦截日志消息slf4j

tomcat上的spring mvc应用程序:slf4j找不到logback.xml,仅记录到catalina.out

SLF4J记录问题

什么是log4j的,SLF4J和的logback之间的区别?

区别log4j,slf4j和logback

如何从SLF4J关闭日志记录

如何更改slf4j日志记录级别