Every time you write a new class, you must declare it as follows:
private static Logger logger = Logger.getLogger(Test.class);
Isn’t this very troublesome? Is there any way to set the Logger to a class that can be called statically, directly call the info, error and other methods, and at the same time print out the current class, thread number and other information?
You can simply encapsulate it to achieve what you want, such as building a class to encapsulate Logger and exposing several static interfaces. As for why many codes are written as private static Logger logger = Logger.getLogger(Test.class);
, it is actually mainly to improve the flexibility and accuracy of logs.
Statementlog
是因?yàn)樗梢远x不同的logger name
可以通過(guò)logger name
定制自己的輸出方式, 比如level
, appender
...etc
If your logs are processed in the same way, you can declare it公共的靜態(tài) log 對(duì)象
, 需要的地方使用該log
There will be no duplicate declarations.
For example:
import static xxx.GlobalLogs.log;
log.debug("...");
log.info("...");
//...
Of course you can also use lombok to simplify your code.