2010-10-24 2 views
0

Я пишу инструмент командной строки, который выполняет множество тестов на наших серверах и выводит на экран вывод.Лучшая техника для печати текста на консоль

В настоящее время я использую log4j для печати на экран и в файл журнала.

Тем не менее, мне было интересно, есть ли более эффективная техника для управления всей печатью из одного класса вместо того, чтобы команды «печатать» были разбросаны по всему моему коду.

например.

logger.info("Connecting to environment: " + envName); 

if (cmd.hasOption(OPTION_CHECK_PRIMARY)) { 
    //print primary leg 
    String primaryLegName = env.getPrimaryLeg().getLegName(); 
    String message = "is primary"; 

    logger.info(String.format("%s : %-4s %s", envName, primaryLegName, message)); 
} 

Это пример вывода, который теперь разбросан по всему моему коду.

Было бы лучше иметь класс Formatter, который обрабатывает всю печать?

Каков наилучший способ его создания?

Что вы думаете о чем-то вроде:

Formatter pf = new PlainFormatter(); 
... 
pf.printEnvironment(envName); 

if (cmd.hasOption(OPTION_CHECK_PRIMARY)) { 
    //print primary leg 
    String primaryLegName = env.getPrimaryLeg().getLegName(); 
    pf.printPrimary(envName, primaryLegName); 
} 

ответ

0

Вы пробовали использовать log4j.properties для форматирования текста. Я думаю, что если вы пытаетесь форматировать уникально для каждого класса, то это все еще возможно, используя log4j.properties.

Вот простой пример log4j.properties

log4j.rootLogger=INFO, A1 
log4j.appender.A1=org.apache.log4j.ConsoleAppender 
log4j.appender.A1.layout=org.apache.log4j.PatternLayout 

Вы можете использовать шаблон в свойствах, как так:

log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n 
+0

Привет, Амир, я использую log4j в данный момент, поэтому я точно как ты говоришь. Тем не менее, я не хочу печатать из разных частей кода, но я бы предпочел иметь один/внешний класс, который обрабатывает печать. Таким образом, если я хочу изменить способ отображения вывода, мне не нужно искать инструкции печати во всех моих классах. – Alessandro

+0

Что вы планируете изменить в будущем? Разве форматирование и ведение журнала не контролируется через файл свойств? Будет ли причина абстрагироваться только от вызова одной строки? –

0

log4j имеет appenders для перенаправления сообщений журнала в разных местах. Цитата: «Несколько консолей существуют для консоли, файлов, компонентов GUI, удаленных серверов сокетов, JMS, регистраторов событий NT и удаленных UNIX-системных демонов» unquote

Смежные вопросы