1. Обзор
1.1 Фон
Регистрация очень важна в нашем ежедневном развитии. Добавление ведения журнала в приложениях обычно основано на трех целях: мониторинг изменений переменных в коде, периодически записывающая их в файлы для статистического анализа другими приложениями; отслеживание траектории времени выполнения кода в качестве основы для будущих аудитов; Выступая в качестве отладчика в интегрированной среде разработки, распечатать информацию отладки в файл или консоли.
1.2 Введение
Log4j (Log for Java) - это проект Apache с открытым исходным кодом, который предоставляет тонкий способ управления журналами. Через файл конфигурации мы можем управлять выходным форматом и назначением каждого журнала с несколькими вариантами. Определяя уровень информации, мы также можем гибко переключить информацию об обратной связи в коде. Проще говоря, log4j - это библиотека API, которая помогает разработчикам управлять выводами журнала. Его наиболее важная функция заключается в том, что файл конфигурации может гибко установить приоритет информации о журнале, пункт назначения информации о журнале и формат вывода информации о журнале.
2. Конфигурация LOG4J
2.1Log4j классовая диаграмма
2.2 Определение файла конфигурации
Log4J может быть динамически установить через Java -программы. Очевидным недостатком этого метода является: если вам нужно изменить уровень вывода журнала и другую информацию, вы должны изменить файл Java, а затем перекомпилировать его, что очень хлопотно.
Использование файлов конфигурации сделает наше приложение более гибким для настройки журналов, а методы вывода журнала включают в себя приоритет вывода, пункт назначения вывода и выходной формат. Log4J поддерживает два формата файлов конфигурации, один из них - файл XML, а другой - это файл файла функции Java log4j.properties (key = value).
2.3 log4j.properties файла конфигурации
Когда Log4J вызывает впервые, Log4J найдет файл в классе (../web-inf/class/, конечно, до тех пор, пока каталог включен в ClassPath) и прочитайте полную конфигурацию файла. Этот файл конфигурации рассказывает Log4J, какой формат, какую информацию выводить туда, где он находится. Соответственно, нам нужно настроить три аспекта:
1. Корневой каталог (уровень и пункт назначения);
2. назначение (консоль, файл и т. Д.);
3. Стиль вывода (как отобразить содержимое журнала)
Примеры следующие:
#Set Log Touge Уровень
log4j.rootlogger = Debug, Appender1
#Output to console
log4j.appender.appender1 = org.apache.log4j.consoseppender
#Style - это ttcclayout
log4j.appender.appender1.layout = org.apache.log4j.ttcclayout
2.4. Log4j три компонента описание
Log4J имеет три основных компонента: Loggers, Appender (источник вывода) и макет (макет). Объединение этих трех компонентов позволяет легко регистрировать тип и уровень информации и может управлять стилем и местоположением вывода журнала во время выполнения. Ниже приведены три компонента:
2.4.1 Логистр регистрации
Объект Logger используется для замены System.out или System.err's Writer Log, который используется для предоставления программистам с выводом информации о журнале.
Корневой регистратор настроен с помощью синтаксиса:
log4j.rootlogger = [level], Appendername, Appendername,…
Среди них уровень является приоритетом ведения журнала, разделенной на выключенные, фатальные, ошибки, предупреждение, информация, отладка, все или пользовательские уровни. Log4J рекомендует использовать только четыре уровня, с приоритетом от высокого до низкого уровня, а именно ошибки, предупреждения, информация и отладка. По определенным здесь уровню вы можете управлять переключателями до соответствующего уровня информации журнала в приложении. Например, если здесь определен уровень информации, вся информация о журнале уровня отладки в приложении не будет распечатана. AppenDername указывает, где информация журнала выводится. Несколько выходных направлений могут быть указаны одновременно.
2.4.2 Приложение для назначения вывода
Система журнала Log4J позволяет выходить из журнала в разных местах, таких как консоль (консоль), файлы (файлы), новые файлы генерируются на основе дней или размера файлов, и отправляются в другие места в виде потоков и т. Д.
Настройка appender, его синтаксис выражается как:
log4j.appender.appendername = Fully.qualified.name.of.appender.classlog4j.appender.appenderNam
"Fully.qualified.name.of.appender.class" может указать одно из следующих пяти направлений:
1) .org.apache.log4j.consoleappender (консоль)
2) .org.apache.log4j.fileAppender (файл)
3) .org.apache.log4j.dailyrollingFileAppender (генерируйте один файл журнала каждый день)
4) .org.apache.log4j.rollingfileAppender (новый файл генерируется, когда размер файла достигает указанного размера)
5) .org.apache.log4j.writerAppender (Отправить информацию о журнале в формате потока в любое указанное место)
(1). Опция посолетия
(2)
(3) .dailyRollingFileAppender опция
То есть соответствующий формат заключается в следующем:
1) '.' Yyyy-mm: ежемесячно
2) '.' Yyyy-WW: Еженедельно
3) '.' Yyyy-mm-dd: каждый день
4) '.' Yyyy-mm-dd-A: два раза в день
5) '.' Yyyy-mm-dd-HH: почасовой
6) '.' Yyyy-mm-dd-Hh-Mm: в минуту
4. Опции RollingFileAppender
2.4.3 Формат (макет)
Иногда я хочу отформатировать свой собственный выходной сигнал в соответствии с моими предпочтениями. Log4J может прикрепить макет за приложением для выполнения этой функции.
Настройка макета, его синтаксис выражается как:
log4j.appender.appendername.layout = Fully.qualified.name.of.layout.classlog4j.appender.appendername.layout.option1 = value1… log4j.appender.appendername.layout.option = valuen
Макет содержит четыре стиля вывода журнала, следующим образом:
(1) .org.apache.log4j.htmllayout (макет в форме таблицы HTML),
(2) .org.apache.log4j.patternlayout (режим макета может быть гибко указан),
(3) .org.apache.log4j.simpleLayout (содержит уровень и информационную строку информации журнала),
(4) .org.apache.log4j.ttcclayout (включая время генерации журнала, поток, категория и т. Д.
Htmllayout параметры
LocationInfo = true: значение по умолчанию неверно, выводите имя файла Java и номер строки
Title = файл моего приложения: значение по умолчанию - это сообщения журнала log4j.
2. Параметры PatternLayout
ConversionPattern =%m%N: указывает, как форматировать указанное сообщение.
Что нужно объяснить здесь, так это значение нескольких символов в формате информации журнала:
Модификаторы могут быть добавлены между % и символами шаблона, чтобы контролировать их минимальную ширину, максимальную ширину и выравнивание текста. нравиться:
1)%20c: укажите имя выходной категории, минимальная ширина составляет 20. Если имя категории составляет менее 20, оно по умолчанию выравнивается по умолчанию.
2)%-20C: указывает имя выходной категории, минимальная ширина составляет 20. Если имя категории составляет менее 20, знак «-» указывает выравнивание левого.
3)%. 30c: укажите имя выходной категории. Максимальная ширина составляет 30. Если имя категории больше 30, дополнительные символы слева будут отрезаны, но если они меньше 30, то места не будет.
4)%20.30c: если название категории меньше 20, заполните пространство и выровняйте его правильно. Если его имя длиннее 30 символов, отключите дополнительные символы слева.
2.5.5.Log4J Пример конфигурации
Простота конфигурации log4J делает ее распространяемой по всему и большему количеству приложений: файлы конфигурации log4j реализуют полный набор функций, таких как вывод, в консоли, файлы, файлы отката, отправка журнала «почта», «Вывод» в таблицы журналов базы данных и пользовательские теги.
log4j.rootlogger = Debug, Console, A1, IM log4j.addivity.org.apache = true
n Применить к консоли
log4j.appender.console = org.apache.log4j.consoleappenderlog4j.appender.Threshold = отладка log4j.appender.console.target = system.outlog4j.appender.console.layout = org.apache.log4j.patternlayout log4j.appender.console.layout.conversionpattern =%d-%c-%-4r [%t]%-5p%c%x-%m%n
n Применить к файлам
log4j.appender.file = org.apache.log4j.fileAppenderlog4j.appender.file.file = file.loglog4j.appender.file.append = falselog4j.appenden %c - % -4r [ %t] %-5p %c %x - %m %n
n Применить к откату файла
log4j.appender.rolling_file = org.apache.log4j.rollingfileAppenderlog4j.appender.rolling_file.threshold = errorlog4j.appender.rolling_file.file = rolling.loglog4j.appender.rolling_file.append = triuelognepender.appender.appender.appender.appender.appender.appender.appender.appender.appender.appender.appender.appender.appender.appender.appender.appender.appender.appender.appender.appender. ender.rolling_file.maxfilesize = 10kblog4j.appender.rolling_file.maxbackupindex = 1log4j.appender.rolling_file.layout = org.apache.log4j.patternlayoutlog4j.appender. %-5p %c %x - %m %n
n Применить к розетку
log4j.appender.socket = org.apache.log4j.rollingfileapenderlog4j.appender.socket.remotehost = localhost log4j.appender.socket.port = 5001log4j.appender.socket.locationinfo = true log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayoutlog4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n%n# Log Factor 5 Appender log4j.appender.lf5_appender = org.apache.log4j.lf5.lf5apdender log4j.appender.lf5_appender.maxnumberofrecords = 2000n Отправить журналы на электронную почту
log4j.appender.mail = org.apache.log4j.net.smtpappenderlog4j.appender.mail.Threshold = fatallog4j.appender.mail.buffersize = 10log4j.appender.mail.from=web@www.wuset.comlog4j.appender.mail.smtphost=www.wusetu.comlog4j.appender.mail.subject=log4j Log4j.appender.mail.t=web@www.wusetu.comlog4j.appender.mail.layout=org.apache.log4j.patternlayout log4j.appender.mail.layout.conversionpattern =%d-%c-%-4r [%t]%-5p%c%x%m%n
n для базы данных
log4j.appender.database = org.apache.log4j.jdbc.jdbcappenderlog4j.appender.database.url = jdbc: mysql: // localhost: 3306/testlog4j.appender.database.driver = com.mysql.jdbc.driver log4j.appender.database.user = rootlog4j.appender.database.password = log4j.appender.database.sql = вставка в значения log4j (сообщение) (' %d - %c - % -4r [ %t] %-5p %c %x - %m %n ') log4j.appender.database.layout = org.apache.log4j.patternlayout log4j.appender.database.layout.conversionPattern =%d-%c-%-4r [%t]%-5p%c%x-%m%nlog4j.appender.a1 = org.apache.log4j.dailyrollingfileAppender log4j.appender.a1.file = samplemessage.log4jjjjjjjjjjjjjjjjjjeppender log4j.appender.a1.datepattern = yyyymmdd-hh'.log4j'log4j.appender.a1.layout = org.apache.log4j.xml.xmllayoutn Пользовательский приложение
log4j.appender.im = net.cybercorlin.util.logger.appender.imappenderlog4j.appender.im.host = mail.cybercorlin.net log4j.appender.im.username = username log4j.appender.im.password = пароль log4j.ampender.recipent = [email protected]=org.apache.log4j.patternlayoutlog4j.appender.im.layout.conversionPattern = [рамочная плата] %d - %c - % - %t] %-5p %c %m %n.
3. Настройка log4j для весны в веб -приложении
Во -первых, вам нужно добавить следующее оператор конфигурации в файл web.xml:
<!-Чтобы избежать конфликтов между проектами, определите уникальный webprootkey-> <stext-param> <param-name> webprootkey </param-name> <value> myproject.root </param-value> </context-param> <!-Загрузите файл конфигурации log4j.properties-> <cestemble-param> <param-name> </name-name-mame-mame-mame> </name-mame-mame> </paramymeclectoce-name-mame> </confign.comconfictocation-> <context-param> </paramyme> </configuration файл. <param-value> /web-inf/classes/config/log4j/log4j.properties </param-value> </context-param> <!-Установите интервал времени для обновления файла конфигурации журнала, установите на 60s здесь-> <paramue-varam> </param-name> vale> vale> vale> 600 <//paramue> 600 <//paramue> 600 <//paramue> vale> 6. </context-param> <!-Загрузите Log4j Suldeer в Spring Framework Log4jconfigListener-> <Learser> <lloader-class> org.springframework.web.util.log4jconfiglistener </alliger-class> </sluster>
Рекомендуется установить значение свойства log4jconfiglocation на: /web-inf/classes/log4j.properties, чтобы, когда мы делаем некоторые тесты, мы можем правильно записать информацию о журнале, когда мы не запускаем веб-приложение. Log4JConfigListener - это класс инструментов, предоставляемый весной. Он открывает поток мониторинга log4j и обнаруживает изменения конфигурации журнала каждые 60 секунд (определение переменной переменной log4jrefreshinterval), поэтому не нужно перезагрузить веб -службу каждый раз для применения новой конфигурации. В Tomcat никакие свойства системы не разделены на основе веб -приложений. Поэтому для каждого веб -приложения должно быть определено уникальное «webprootkey», и мы назвали его webapp.root. После запуска среды log4jconfiglistener введите значение в переменную webapp.root.
4. Используйте log4j в коде
4.1. Получите регистратор
Используя log4j, первым шагом является получение регистратора журнала, который будет отвечать за управление информацией о журнале.
Public Static Logger GetLogger (имя строки)
Получите журнал по указанному имени и, при необходимости, создайте новый журнал для имени. Имя обычно называется в этом классе, например:
static logger logger = logger.getlogger (serverwithlog4j.class.getName ())
4.2. Прочитайте файл конфигурации
После получения регистратора второй шаг будет настроить среду log4j с синтаксисом как:
Если вы разместите log4j.properties в корневом каталоге проекта, вы также не можете написать это предложение, и программа автоматически найдет файл конфигурации.
BasicConfigurator.configure (): автоматически и быстро используйте среду log4j по умолчанию. PropertyConfigurator.configure (String configFilename): считывает файлы конфигурации, написанные с использованием файлов функций Java.
Domconfigurator.configure (String FileName): чтение файлов конфигурации в форме XML.
Log4J инициализируется с использованием вышеуказанных конфигураторов, а использование PropertyConfigurator подходит для всех систем. Следующее утверждение.
PropertyConfigurator.configure ("log4j.properties");Для General Java Project Log4J может быть инициализирован без использования вышеуказанного оператора. Log4J автоматически найдет файл конфигурации в ClassPath и инициализирует его. Если log4j не может автоматически инициализировать файл конфигурации, то вышеуказанный метод должен быть инициализирован.
ПРИМЕЧАНИЕ. При инициализации файла конфигурации лучше всего выполнить его только один раз при запуске системы. Если он выполняет его несколько раз, один из них является пустой тратой ресурсов, а другой заключается в том, что для старой версии Log4J могут возникнуть проблемы при использовании DailyrollingFileAppender.
4.3. Вставьте информацию о записи (информация о журнале формата)
Когда два предыдущих необходимых шага выполняются, вы можете легко вставить операторы журнала разных уровней приоритетов везде, где вы хотите войти в систему. Синтаксис выглядит следующим образом:
Logger.debug (сообщение объекта);