开发者

Best technique to print text to console

I am writing a command line tool that performs a number of tests to our servers and reports an output to screen.

I am currently using log4j to print to screen and to a log file.

However, I was wondering if there was a better technique to manage all the printing from one class instead of having the "print" commands scattered开发者_Python百科 all over my code.

e.g.

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));
}

This is an example of the output that is now scattered across all my code.

Would it be best to have a Formatter class that handles all the printing?

What is the best approach to create it?

What do you think about something like:

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); 
}


Have you tried using log4j.properties to format the text. I think if you are trying to format uniquely for each class, then this is still possible using log4j.properties.

Here is a simple example of log4j.properties

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

You can use Pattern in properties like so:

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


log4j has appenders to redirect log messages to different locations. quote" Multiple appenders exist for the console, files, GUI components, remote socket servers, JMS, NT Event Loggers, and remote UNIX Syslog daemons "unquote

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜