自动在“System.out.println()”语句中显示日期

时间:2014-02-10 15:23:36

标签: java minecraft

我知道您打印的每一行都可以用日期标记(也可以保存为日志文件)。

例如在Minecraft中:

[16:21:43 INFO]: Minecraft Launcher 1.3.9 (through bootstrap 5) started on windows...

我该怎么做?也许和Logger一起?或者是否需要外部图书馆?

3 个答案:

答案 0 :(得分:5)

可以通过调用System.out.println

在String中显示前缀的日期
  1. 创建自定义PrintStream
  2. 覆盖println方法,为String添加日期
  3. 使用您的自定义System.setOut
  4. 设置PrintStream

    自定义流:

    public class MyPrintStream extends PrintStream {
    
        public MyPrintStream(OutputStream out) {
            super(out);
        }
    
        @Override
        public void println(String string) {
            Date date = new Date();
            super.println("[" + date.toString() + "] " + string);
        }
    }
    

    测试类:

     public static void main(String[] args) {
                System.setOut(new MyPrintStream(System.out));
                System.out.println("Hello World!");
                    System.out.println("Yellow World!");
            }
    

    <强>输出:

    [Mon Feb 10 21:10:14 IST 2014] Hello World!
    [Mon Feb 10 21:10:14 IST 2014] Yellow World!
    

答案 1 :(得分:4)

这些不是通过println直接完成的,它们是使用记录器完成的。请注意INFO级别以及日期。

private static final Logger LOGGER = Logger.getLogger(X.getClass.getName());

然后

LOGGER.info("Hi");
LOGGER.debug("This is a debug message");

最常见的记录器是Apache log4j或java.util.logging中的内置记录器。

答案 2 :(得分:3)

虽然the answer by PopoFibo是正确的,聪明的,并且专门回答了问题,但更大的答案是:使用日志框架。日志记录框架将自动插入当前日期时间并执行更多操作。

通常我们使用System.out.println()只是为了在编程时快速检查值。从程序中获取信息的更有条理的方法是使用日志框架(或JMX – Java Management Extensions,但这是另一个主题)。

的log4j

在过去,log4j框架是一个流行的框架,也是最早创建光滑日志系统的框架之一。目前正在对log4j进行大修,称为Apache Log4j 2

的java.util.logging

后来,Sun向Java添加了logging facility。虽然有用,但许多人认为它不是最佳的。

SLF4J

log4j的创建者后来继续创建了他之前发明的继承者。他把它分成了(1)一个façade,一个基于接口的API,以及(2)实际进行日志记录的任意数量的实现。我们的想法是,您可以在不更改自己的代码库的情况下插入或替换各种实现。

外观称为SLF4J (Simple Logging Façade for Java)。 SLF4J捆绑了几个非常简单的实现。但通常您会希望插入更强大,更灵活或专业的实现。

有几个适配器可用于其他可能不了解SLF4J的日志框架,例如log4j或java.util.Logging。

许多库使用SLF4J进行内部日志记录,因此使用该库的任何人都可以插入自己特定的日志记录框架。

的logback

SLF4J的创建者还创建了他自己的SLF4J的完整实现,称为LogBack

用途

使用这些日志框架的要点之一是灵活性。您可以将它们配置为向System.outSystem.err,文本文件,数据库和其他目标发送消息。