Лучшая техника для печати текста на консоль - PullRequest
0 голосов
/ 24 октября 2010

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

В настоящее время я использую 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); 
}

Ответы [ 2 ]

0 голосов
/ 24 октября 2010

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

0 голосов
/ 24 октября 2010

Вы пытались использовать 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

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

log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...