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 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
You can use Pattern in properties like so: