Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between Java Logger and System.out.println

Tags:

I looked up the api about the logger class(here) and I was looking at the Logger.info method. I was confused when I saw its perimeter as a message displayed as a string public void info(String msg) which is same as System.out.println(). I am wondering what is the different between these two, and why do we use Logger instead of System.out.println when they can print out the same thing.

In Logger.

Logger.info("Hello")

Output:

[INFO ] 2015-08-07 11:18:46.140 [main] ClassName Hello 

In System.out.println

`System.out.println("Hello")

Output: Hello

like image 936
RedRocket Avatar asked Aug 07 '15 03:08

RedRocket


2 Answers

Usually, because a Logger can be configured to write to a file (and the console). It might also be configured at higher (or lower) granularity as to messaging. For example, you might configure (at runtime) for level of warn. In which case, that logger would not display debug or info messages. It can include information such as the class that is writing, a line number, and a date and time (of the message).

like image 172
Elliott Frisch Avatar answered Sep 20 '22 21:09

Elliott Frisch


Using a logger allows you to abstract out a lot of details and do a lot more than you could writing to stdout.

  • You can specify different destinations to write to. Different appenders write to a file, roll the file for given time periods, write to a queue or database, etc.

  • You can specify a consistent format for log messages instead of having to add it to every line you write to stdout.

  • You can choose an appender that buffers the output so that multiple threads can log without having the threads contend for the lock on the console object.

  • You can do a lot with filtering by category (typically package and classname) and log level (trace, debug, info, error, fatal), to make it easy to configure what log messages you want to see and which you want to ignore. With logging you can change the configuration in the logger properties or include a page in your application to change what gets filtered on the fly.

  • You can mix and match this stuff, for instance, setting up a specific smtp appender to email log messages for logging level of error or higher, in addition to writing the messages to a rolling file or whatever.

like image 23
Nathan Hughes Avatar answered Sep 20 '22 21:09

Nathan Hughes