Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
tavla
0 / 0 / 0
Регистрация: 27.07.2016
Сообщений: 5
#1

Програмная настройка логера slf4j

27.07.2016, 18:22. Просмотров 383. Ответов 0
Метки нет (Все метки)

добрый день.

использую логгер slf4j, при конфигурации посредством xml все работает отлично
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<configuration>
    <property name="LOG_DIR" value="/sdcard/Results/.logs" />
 
    <appender
            name="LOGCAT"
            class="ch.qos.logback.classic.android.LogcatAppender" >
        <tagEncoder>
            <pattern>akrit</pattern>
        </tagEncoder>
        <encoder>
            <pattern>[%class{0}][%thread] %msg%n</pattern>
        </encoder>
    </appender>
 
 
<!-- -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_DIR}/log.txt</file>
 
        <append>true</append>
        <encoder>
            <pattern>%date{ISO8601} [%thread] %-5level %logger{0} %msg%n</pattern>
        </encoder>
 
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_DIR}/log.%d.txt</fileNamePattern>
            <maxHistory>14</maxHistory>
        </rollingPolicy>
    </appender>
 
    <root level="DEBUG" >
        <appender-ref ref="LOGCAT" />
        <appender-ref ref="FILE" />
    </root>
 
</configuration>
но когда создаю то же самое программно, ничего нет ни в логкэте, ни в файле лога:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
package projects.common.logger;
 
import org.slf4j.LoggerFactory;
 
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.android.LogcatAppender;
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 LogBack {
    private static boolean debugMode = true;
    private static String logPath = null;
 
    public static Logger getLogger(Class<?> _clazz) {
        //return getLoggerXML(_clazz);
        return configureLogbackDirectly(_clazz, debugMode, logPath);
    }
 
    public static Logger getLoggerXML(Class<?> _clazz) {
        return (Logger) LoggerFactory.getLogger(_clazz);
    }
 
    public static void setDebugMode(boolean _debugMode) {
        debugMode = _debugMode;
    }
 
    public static void setLogPath(String _logPath) {
        logPath = _logPath;
    }
 
    private static Logger configureLogbackDirectly(Class<?> _clazz, boolean _debug, String _logPath) {
        LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
        context.reset();
 
        Logger root = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
        root.setLevel(Level.ERROR);
        if (_debug)
            root.setLevel(Level.DEBUG);
        root.addAppender(logCat(context));
        if (_logPath != null)
            root.addAppender(logFile(context, _logPath));
 
        return (Logger) LoggerFactory.getLogger(_clazz);
    }
 
    private static RollingFileAppender<ILoggingEvent> logFile(LoggerContext _context, String _filePath) {
        RollingFileAppender<ILoggingEvent> rollingFileAppender = new RollingFileAppender<ILoggingEvent>();
        rollingFileAppender.setAppend(true);
        rollingFileAppender.setContext(_context);
 
        rollingFileAppender.setFile(_filePath + "/log.txt");
 
        TimeBasedRollingPolicy<ILoggingEvent> rollingPolicy = new TimeBasedRollingPolicy<ILoggingEvent>();
        rollingPolicy.setFileNamePattern(_filePath + "/log.%d.txt");
        rollingPolicy.setMaxHistory(7);
        rollingPolicy.setParent(rollingFileAppender);
        rollingPolicy.setContext(_context);
        rollingPolicy.start();
 
        rollingFileAppender.setRollingPolicy(rollingPolicy);
 
        PatternLayoutEncoder encoder = new PatternLayoutEncoder();
        encoder.setPattern("%date{ISO8601} [%thread] %-5level %logger{0} %msg%n");
        encoder.setContext(_context);
        encoder.start();
 
        rollingFileAppender.setEncoder(encoder);
        rollingFileAppender.setName("rollingFileAppender");
        rollingFileAppender.start();
 
        return rollingFileAppender;
    }
 
    private static LogcatAppender logCat(LoggerContext _context) {
        PatternLayoutEncoder encoder = new PatternLayoutEncoder();
        encoder.setContext(_context);
        encoder.setPattern("[%thread] %msg%n");
        encoder.start();
 
        PatternLayoutEncoder tag_encoder = new PatternLayoutEncoder();
        tag_encoder.setContext(_context);
        tag_encoder.setPattern("%class{0}");
        tag_encoder.start();
 
        LogcatAppender logcatAppender = new LogcatAppender();
        logcatAppender.setContext(_context);
        logcatAppender.setEncoder(encoder);
        logcatAppender.setTagEncoder(tag_encoder);
        logcatAppender.setName("logcatAppender");
        logcatAppender.start();
 
        return logcatAppender;
    }
}
т.е. если в getLogger(Class<?> _clazz) сделать активным метод getLoggerXML(_clazz), то все работает, configureLogbackDirectly(_clazz, debugMode, logPath) - нет.
подскажите, где я накосячил.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.07.2016, 18:22
Ответы с готовыми решениями:

Eclipse настройка логера
Добрый вечер, сильно не ругайте, но вечер, воскресенье, голова не думает.... не...

Hibernate пишет в output все запросы даже при уровне логера = ERROR
У меня конфигурация spring + jpa (поставщик hibernate), как логгер используется...

Програмная инженерия
Выдали тесты не как не могу найти ответы перелопатил интерент и конспек не ...

Програмная компановка виджетов
У меня есть изначальная форма. Потом с помощью представленного кода, я добавляю...

Програмная авторизация на сайте
Здравствуйте форумчане! Прошу помощи с програмной авторизацией на сайте...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.07.2016, 18:22

Програмная виртуализация в биосе
При попытке открыть виртуальную машину пишет &quot;Mac OS X is not supported with...

програмная перезагрузка контроллера
Доброго времени суток всем возникла необходимость во время паботы программы...

Програмная имитация нажатия кнопки
Написал код который по клику будет менять цвет фона страницы, хочу чтобы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru