每次写个新的类,就要在下面声明下:
private static Logger logger = Logger.getLogger(Test.class);
这样的话不是很麻烦吗?有没有什么办法,把Logger设置成可以静态调用的类,直接调用info,error等方法,同时还可以打印出当前类、线程号等信息?
每次写个新的类,就要在下面声明下:
private static Logger logger = Logger.getLogger(Test.class);
这样的话不是很麻烦吗?有没有什么办法,把Logger设置成可以静态调用的类,直接调用info,error等方法,同时还可以打印出当前类、线程号等信息?
你大可以简单封装一下实现你要的目的,比如建个类把Logger封装进去,暴露几个静态接口出来。至于为什么很多代码书写的时候写成private static Logger logger = Logger.getLogger(Test.class);
,其实主要是为了提高日志的灵活性、准确性等。
Java8的接口默认方法,
搞个接口ILogger,
包含各级日志方法,
方法内调用 getLogger然后输出日志,
参考kotlin的anko库的AnkoLogger,
https://github.com/Kotlin/ank...
或者固定的静态方法,
通过stack trace判断调用者的类再输出日志,
这主要是为了日志的灵活性,针对不同的包类可以设置不同的日志级别,你可以自己定义个类
public class Xlog{
public static void debug(String s){
Class caller = sun.reflect.Reflection.getCallerClass();
Logger logger = LoggerFactory.getLogger(caller);
logger.debug(s);
}
}
然后直接用Xlog的这个静态方法写日志
3 回答2.6k 阅读✓ 已解决
3 回答4.1k 阅读✓ 已解决
8 回答3.6k 阅读
4 回答2.8k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
3 回答1.7k 阅读✓ 已解决
声明
log
是因为他可以定义不同的logger name
可以通过logger name
定制自己的输出方式, 比如level
,appender
...等如果你的日志是以相同的方式处理那你完全可以声明
公共的静态 log 对象
, 需要的地方使用该log
也不存在重复声明的情况了.如:
当然你还可以使用 lombok 的方式来简化你的代码.