Przydatne byłoby automatyczne dołączanie plików dziennika do obsługi wiadomości e-mail. Mogę ustawić ścieżkę programowo (jak w Setting Logback Appender path programmatically), ale wolę pozwolić użytkownikom skonfigurować logowanie w znany sposób przez logback.xml
. Czy mogę znaleźć pliki do wykorzystania logback do logowania?Czy można znaleźć program logback logback?
Odpowiedz
Możesz otrzymać listę wszystkich elementów dodających w określonym kontekście. Aby to zrobić:
LoggerContext context = (LoggerContext)LoggerFactory.getILoggerFactory();
for (Logger logger : context.getLoggerList()) {
for (Iterator<Appender<ILoggingEvent>> index = logger.iteratorForAppenders(); index.hasNext();) {
Appender<ILoggingEvent> appender = index.next();
}
}
Powtarza to listę wszystkich elementów wprowadzających we wszystkich rejestratorach dla bieżącego kontekstu.
Metoda iteratorForAppenders już nie istnieje w programie rejestrującym (http://www.slf4j.org/apidocs/org/slf4j/Logger.html). Masz pomysł, jak to działa? – user3885927
@ user3885927 upewnij się, że importujesz plik ch.qos.logback.classic.Logger, a nie org.slf4j.Logger! – Catchwa
Odpowiedź podana przez @ tafoo85 jest poprawna, ale da Ci tylko aplikantów.
Aby dokładniej uzyskać plik używany przez Logback Logger, mam nadzieję, że poniższy kod pomoże mu.
File clientLogFile;
FileAppender<?> fileAppender = null;
LoggerContext context = (LoggerContext)LoggerFactory.getILoggerFactory();
for (Logger logger : context.getLoggerList())
{
for (Iterator<Appender<ILoggingEvent>> index = logger.iteratorForAppenders();
index.hasNext();)
{
Object enumElement = index.next();
if (enumElement instanceof FileAppender) {
fileAppender=(FileAppender<?>)enumElement;
}
}
}
if (fileAppender != null) {
clientLogFile=new File(fileAppender.getFile());
}
else {
clientLogFile = null;
}
Log.d("logfile path", clientLogFile.getAbsolutePath());
Było dokładnie to, czego potrzebowałem, chociaż zmieniłem wiersz 'Object enumElement = index.next();' na 'Appender
@danial, który będzie bardziej szczegółowy. ale jeśli chcesz mieć 2-3 plik rejestratora (debugowanie i śledzenie), ten kod będzie działał idealnie. – androidnoobdev
Przepraszam, ale nie rozumiem pytania. Czy mógłbyś nieco rozwinąć? – Ceki
@Ceki: bardziej ogólnie, czy mogę uzyskać listę wszystkich aplikantów używanych przez Logback? –