Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将文本打印到控制台的最佳技术_Java_Oop_Console - Fatal编程技术网

Java 将文本打印到控制台的最佳技术

Java 将文本打印到控制台的最佳技术,java,oop,console,Java,Oop,Console,我正在编写一个命令行工具,它对我们的服务器执行许多测试,并向屏幕报告输出 我目前正在使用log4j打印到屏幕和日志文件 但是,我想知道是否有更好的技术来管理一个类中的所有打印,而不是将“print”命令分散在我的代码中 e、 g 这是一个现在分散在我所有代码中的输出示例 最好有一个处理所有打印的格式化程序类吗 创建它的最佳方法是什么 你怎么看待这样的事情: Formatter pf = new PlainFormatter(); ... pf.printEnvironment(envName);

我正在编写一个命令行工具,它对我们的服务器执行许多测试,并向屏幕报告输出

我目前正在使用log4j打印到屏幕和日志文件

但是,我想知道是否有更好的技术来管理一个类中的所有打印,而不是将“print”命令分散在我的代码中

e、 g

这是一个现在分散在我所有代码中的输出示例

最好有一个处理所有打印的格式化程序类吗

创建它的最佳方法是什么

你怎么看待这样的事情:

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

您是否尝试过使用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

log4j具有将日志消息重定向到不同位置的附加器。quote“控制台、文件、GUI组件、远程套接字服务器、JMS、NT事件记录器和远程UNIX系统日志守护进程存在多个附加程序”unquote

嗨,阿米尔,我现在正在使用log4j,所以我完全按照你说的做。但是,我不希望从代码的不同部分打印,而是希望有一个单独的/外部类来处理打印。这样,如果我想改变显示输出的方式,我就不必在我所有的类中查找print语句。你打算在将来改变什么?格式化和日志记录级别不是通过属性文件控制的吗?是否有理由只提取一行函数调用?
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n