|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Appender и Layout
Вывод регистратора может быть направлен в различные места назначения. Каждому из них соответствует класс, реализующий интерфейс Appender. С помощью метода addAppender(Appender newAppender) класса Logger можно добавить Apeender к регистратору. Один регистратор может иметь несколько элементов Appender. Вывод на консоль осуществляется с помощью класса ConsoleAppender. Класс FileAppender используется для вывода сообщений в файл. Для установки файла, в который будет выполняться вывод, нужно передать имя файла в конструктор FileAppender(Layout layout, String filename) или метод setFile(String file). По умолчанию любые сообщения, записанные в файл, будут добавляться к уже имеющимся. Изменить это можно с помощью конструктора FileAppender(Layout layout, String filename, boolean append) сбросив флаг append или с помощью метода setAppend(boolean append). Кроме того, вывод в базу данных можно произвести с помощью класса JDBCAppender, в журнал событий ОС – NTEventLogAppender, на SMTP-сервер – SMTPAppender, на удаленный сервер – SocketAppender. Любой вывод, сделанный в регистраторе, будет направлен всем его предкам. Чтобы этого избежать, в регистраторе следует установить флаг аддитивности Вывод регистратора может иметь различный формат. Каждый формат представлен классом, производным от Layout. Все методы класса Layout предназначены только для создания подклассов. В библиотеке определены следующие: HTMLLayout – вывод в HTML-формате; XMLLayout – вывод в XML-формате; SimpleLayout – вывод в простом текстовом формате. Более информативен вывод в XML-формате. Установить Layout для FileAppender или ConsoleAppender можно В приведенном ниже примере производятся регистрация и вывод как обычных информационных сообщений о выполненных действиях, так и сообщений о возникающих ошибках (попытке вычисления факториала отрицательного числа). /* пример # 1: регистратор ошибок: Demo Log.java */package app6; import org.apache.log4j.Logger; import org.apache.log4j.FileAppender; import org.apache.log4j.SimpleLayout; import org.apache.log4j.Level; import java.io.IOException;
public class DemoLog { static Logger logger = Logger.getLogger(DemoLog. class);
public static void main(String[] args) { try { //возможна и программная настройка factorial(9); factorial(-3); } catch (IllegalArgumentException e) { //вывод сообщения уровня ERROR logger.error("negative argument", e); } } public static int factorial(int n) { if (n < 0) throw new IllegalArgumentException( "argument " + n +" less then zero"); //вывод сообщения уровня DEBUG logger.debug("Argument n is " + n); int result = 1; for (int i = n; i >= 1; i--) result *= i; //вывод сообщения уровня INFO logger.info("Result is " + result); return result; } } При этом в корне проекта должен находиться конфигурационный файл "log4j.xml" со следующим содержимым: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'> <appender name="TxtAppender" class="org.apache.log4j.FileAppender"> <param name="File" value="log.txt" /> <layout class="org.apache.log4j.SimpleLayout"/> </appender> <logger name="app6"> <level value="debug" /> </logger> <root> <appender-ref ref="TxtAppender" /> </root> </log4j:configuration> Вывод регистратора "app6.DemoLog", в файл log.txt будет следующим: Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.) |