Log4J выводит несколько пользовательских файлов журнала
Если вам нужно вывести независимые файлы журнала в реальных приложениях, как вы можете отделить требуемый содержимое от исходного журнала и сформировать отдельный файл журнала?
Давайте сначала рассмотрим общий файл log4j.properties, который записывает журналы в файлах консоли и test.log:
Кода -копия выглядит следующим образом:
log4j.rootlogger = отладка, stdout, logfile
log4j.appender.stdout = org.apache.log4j.consoseppender
log4j.appender.stdout.layout = org.apache.log4j.patternlayout
log4j.appender.stdout.layout.conversionpattern =%d%p [%c] -%m%n
log4j.appender.logfile = org.apache.log4j.rollingFileAppender
log4j.appender.logfile.file = log/test.log
log4j.appender.logfile.maxfilesize = 128mb
log4j.appender.logfile.maxbackupindex = 3
log4j.appender.logfile.layout = org.apache.log4j.patternlayout
log4j.appender.logfile.layout.conversionpattern =%d {yyyy-mm-dd Hh: MM: SS}%-5p [%t]%c.%m (%l)-%m%n
Что если несколько файлов журнала должны быть выводиться в одном и том же классе? На самом деле, правда такая же.
Кода -копия выглядит следующим образом:
Private Static Log Logger1 = logfactory.getLog ("mylogger1");
Private Static Log Logger2 = logfactory.getLog ("mylogger2");
Конфигурация в log4j.properties заключается в следующем:
Кода -копия выглядит следующим образом:
log4j.logger.mylogger1 = отладка, test1
log4j.appender.test1 = org.apache.log4j.fileAppender
log4j.appender.test1.file = log/test1.log
log4j.appender.test1.layout = org.apache.log4j.patternlayout
log4j.appender.test1.layout.conversionpattern =%d {yyyy-mm-dd Hh: MM: SS}%-5p [%t]%c.%m (%l)-%m%n
log4j.logger.mylogger2 = Debug, test2
log4j.appender.test2 = org.apache.log4j.fileAppender
log4j.appender.test2.file = log/test2.log
log4j.appender.test2.layout = org.apache.log4j.patternlayout
log4j.appender.test2.layout.conversionpattern =%d {yyyy-mm-dd Hh: MM: SS}%-5p [%t]%c.%m (%l)-%m%n n
Различные журналы должны использоваться для различных журналов (например, logger1.info («ABC») следует использовать для вывода в Test1.log).
Другая проблема заключается в том, что эти пользовательские журналы выводятся в журналы, настроенные Log4j.rootlogger по умолчанию. Не волнуйтесь, вот переключатель:
log4j.additiation
Он используется, чтобы одновременно вывести его в журнал, настроенный Log4J.ROOTLOGGER.
Однако этот метод имеет небольшой недостаток, то есть имя класса в печатном журнале может быть только MyLogger или MyLogger2.
2 пута динамической конфигурации
Если путь журнала, требуемый программой, должен быть постоянно изменяться, и невозможно каждый раз менять файл конфигурации, вы можете использовать переменные среды для его решения.
Конфигурация log4j заключается в следующем:
Кода -копия выглядит следующим образом:
log4j.rootlogger = Debug, Infolog, Debuglog
#info log
log4j.appender.infolog = org.apache.log4j.dailyrollingFileAppender
log4j.appender.infolog.file = $ {log.dir}/$ {log.info.file}
log4j.appender.infolog.datepattern = .yyyy-mm-dd
log4j.appender.infolog.threshold = info
log4j.appender.infolog.layout = org.apache.log4j.patternlayout
log4j.appender.infolog.layout.conversionpattern =%d {yyyy-mm-dd HH: MM: SS}%-5p [%t]%c.%m (%l)-%m%n.
#debug log
log4j.appender.debuglog = org.apache.log4j.rollingfileAppender
log4j.appender.debuglog.file = $ {log.dir}/$ {log.debug.file}
log4j.appender.debuglog.threshold = отладка
log4j.appender.debuglog.maxfilesize = 128mb
log4j.appender.debuglog.maxbackupindex = 3
log4j.appender.debuglog.layout = org.apache.log4j.patternlayout
log4j.appender.debuglog.layout.conversionpattern =%d {yyyy-mm-dd HH: MM: SS}%-5p [%t]%c.%m (%l)-%m%n
В настоящее время, прежде чем использовать журнал для печати журнала, вам необходимо использовать систему для определения выходного пути и переменных среды имени файла:
Кода -копия выглядит следующим образом:
System.SetProperty ("log.dir", loddir);
System.setProperty ("log.info.file", Infologfilename);
System.setProperty ("log.debug.file", Debuglogfilename);
Приложение: значение формата параметра шаблона
%c Полное имя класса, к которому принадлежит информация о журнале
%d выводит дату или время времени журнала. : 2013-8-19-22:10:28
%f Имя класса класса, к которому принадлежит информация о журнале
%l Событие выходного журнала происходит, то есть оператор, который выводит информацию о журнале, в какой строке класса находится
%m выводит информацию, указанную в коде, такую как сообщение в журнале (сообщение)
%n выводит перерыв обратной линии перевозки, платформа Windows «/r/n», а платформа Unix - это "/n"
%p Приоритет вывода, то есть отладка, информация, предупреждение, ошибка, фатальная. Если он выводит по вызову debug (), это отладка и т. Д.
%R выводит количество миллисекундов, взятых с начала приложения для вывода информации о журнале
%t выводит имя потока, которое генерирует событие журнала