这是我参与2022首次更文挑战的第18天,活动详情查看:2022首次更文挑战
项目中log系统必不可少的一个组件,其用户无需赘述。 java日志系统一般会分为接口层和实现层,例如common-logging和slf4j等
1.java的日志系统,常用的common-logging.jar这个类似是log系统接口规约,log4j则是具体的实现工具。当然logging可以脱离log4j这个实现类自己独立使用,但应该是不支持将log信息保存到文件中,只支持控制台打印。 common-logging其会自动寻找其实现类,如果系统存在log4j的配置的文件,就会采用log4j系统来实现log功能。
如何使用:
public static void main( String[] args ){
Log log = LogFactory.getLog(App.class);
log.error("hello world");
}
使用log4j 配置文件,log4j支持两种格式的配置文件properties和xml 无论使用哪一种,都要注意log4j.rootLogger字段,该值是指定显示内容的级别:可以包括分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或 者您定义的级别,不在这里包含的一定不会打印出来。
配置文件放在哪?
一般在跟src同级创建一个文件夹conf,将其放在里面,
当然这个配置文件可以随便放,只要在初始化log4j的时候指定一下就好了。
public static void main(String[] args) {
DOMConfigurator.configure("./conf/log4j.xml");//xml文件指定方法
//PropertyConfigurator.configure("./conf/log4j.properties")//properties文件指定方法
Logger logger = LoggerFactory.getLogger(App.class);
logger.error("hello");
}
关于配置文件就不次赘述了,网上资料很多。 同时log4j支持自定义级别,输出自己定制的。
2.slf4j日志接口层 这个接口层设计的是相当好用的,我在生产环境中用到的就是这个日志接口层,它和log4j这种实现层结合在代码层也是无需任何代码来绑定的。但是需要引入一个slf4j-log4j绑定的包。
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.25</version>
</dependency>
现在好多系统使用logback来充当日志的实现层,他跟slf4j是同一个作者,所以有着天然的支持和效率。目前主流使用slf4j+logback slf4j log.error参数
log.error("异常信息={}",1,e)