共计 2229 个字符,预计需要花费 6 分钟才能阅读完成。
对于程序猿来讲,一个应用程序的日志治理是极为重要的。因为,它能够帮忙咱们随时查看应用程序的运行状态、执行成果等信息,从而监控软件系统、或是依据日志信息解决一些重要的问题。
然而在 Java 应用程序中又有着泛滥的日志框架或是工具组件,比方 Java 的 Jdk 本身提供的 logging、Apache 提供的 log4j、还有 logback 等日志框架。明天所提到的 slf4j,它并不是一个具体的日志解决方案,它的存在只是为了服务于各式各样的日志零碎,用户能够依据本人的需要抉择日志零碎比方 log4j。slf4j 相当于是对不同的日志零碎提供的接口,它独立于咱们所常常应用的日志零碎比方 logback、log4j 等等。大家试想,如果在开发过程中呈现了好几个日志类库,那么咱们必须要对这些独自的日志零碎进行配置、并且各个日志系统维护起来也是相当的麻烦。
通过 slf4j 的接口封装当前的日志零碎调用也变得更加的简洁、并且使打印日志的办法也变得更加的高效。特地是提供的模板办法进行日志打印,缩小了不停的创立字符串的耗费,在生产环境中日志对系统性能的影响往往是十分重要的,必须引起器重。当初,个别的微服务架构中都会采纳 ELK 的架构模式,简略来讲就是将每个微服务模块的日志、接口调用信息都发送到另外一台服务器上应用 Web 日志零碎进行查看,如果有须要理解 ELK 日志零碎的能够留言前期文章进行阐明。
logger.debug("result is name: {} and age : {}", name, age);
接下来,阐明一下如何联合 log4j、slf4j 的日志组件进行利用在咱们的框架应用程序中,先实践、后实际,话不多说,咱们先来看一下 Maven 的 pom 配置文件中配置这两个日志组件的依赖。
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
其中 slf4j-api 是对外提供独立的日志接口,而 slf4j-log4j12 则是 slf4j 对于 log4j12 的反对,须要留神的是这两个组件的版本要保持一致免得产生不必要的麻烦。实现了依赖组件的引入,说一下日志零碎的配置。在 我的项目中的 resource 文件夹上面新建 log4j.properties 文件进行接下来的配置。
### 设置 rootLogger,个别在开发环境中应用 debug 级别日志
log4j.rootLogger = info,stdout,D,E
## 控制台输入
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
### 默认是 system.out
log4j.appender.stdout.Target = System.out
### 布局格局,能够灵便指定
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
### 音讯格式化
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
## 以每天一个文件输入日志
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
## 输入文件目录
log4j.appender.D.File = /usr/log/info.log
## 音讯减少到指定的文件中,false 示意笼罩指定文件内容
log4j.appender.D.Append = true
## 输入信息最低级别
log4j.appender.D.Threshold = INFO
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [%t:%r] - [%p] %m%n
如果是 SpringBoot 还能够应用 yml 的模式来进行配置,构造、条理都会更加的清晰。最初,简略来阐明一下应用 slf4j 的模式在应用程序中进行日志打印操作。
// 应用 slf4j 的 Logger 对象获取类名为 Main 的日志对象,个别 Main 指的是以后类的名称
private static Logger logger = Logger.getLogger(Main.class);
public static void main(String[] args) {
String str = "测试字符串";
logger.info("str:{}", str);
}
这里展现了 logger.info() 办法的应用,还有 debug()、error() 办法等,并且每个办法都能够应用不同数量的参数能够满足比拟多的需要。
更多精彩返回微信公众号【老王说编程】>>>